A method for increasing data security of source data having a plurality of data elements, each data element having a size of a defined number of bytes executed by a system comprised of at least one computer in communication with at least one separate storage resource comprising: determining, based on one of user input and computed value, a maximum size of a microshard data fragment (905,906), that is at least one byte less than the defined number of bytes of one of the plurality of data elements, splitting the source data into a plurality of microshard data fragments (905,906) wherein the size of the plurality of microshard data fragments is less than or equal to the determined maximum size of the microshard data fragment, selecting one of the plurality of microshard data fragments (905,906) from the source data, determining a pointer value (903,904) which defines a location for at least one of the storage resource, and a file on the storage resource, and a location in the file, where the microshard data fragment (905,906) will be stored, storing the one of the plurality of microshard data fragments in the location defined by the pointer value, storing the pointer value (903,904), wherein at least part of the pointer value is stored in at least one pointer repository, wherein at least a subset of the at least one pointer repository is in a distinct location from where the microshard data fragments are stored, repeating the steps of (i) selecting one of the plurality of microshard data fragments, (ii) determining a pointer value, (iii) storing the one of the plurality of microshard data fragments and (iv) storing at least part of the pointer value until the plurality of microshard data fragments are stored, wherein a plurality of the microshard data fragments (905, 906) stored in contiguous locations were not adjacent in the source data. determining, based on one of user input and computed value, a maximum size of a microshard data fragment (905,906), that is at least one byte less than the defined number of bytes of one of the plurality of data elements, splitting the source data into a plurality of microshard data fragments (905,906) wherein the size of the plurality of microshard data fragments is less than or equal to the determined maximum size of the microshard data fragment, selecting one of the plurality of microshard data fragments (905,906) from the source data, determining a pointer value (903,904) which defines a location for at least one of the storage resource, and a file on the storage resource, and a location in the file, where the microshard data fragment (905,906) will be stored, storing the one of the plurality of microshard data fragments in the location defined by the pointer value, storing the pointer value (903,904), wherein at least part of the pointer value is stored in at least one pointer repository, wherein at least a subset of the at least one pointer repository is in a distinct location from where the microshard data fragments are stored, repeating the steps of (i) selecting one of the plurality of microshard data fragments, (ii) determining a pointer value, (iii) storing the one of the plurality of microshard data fragments and (iv) storing at least part of the pointer value until the plurality of microshard data fragments are stored, wherein a plurality of the microshard data fragments (905, 906) stored in contiguous locations were not adjacent in the source data.