A system for the distributed storage of electronic data, the system comprising: a communications interface and a non-transitory memory coupled with a processor; the communications interface configured to receive input data blocks and user storage constraints from a user; the memory having stored thereon: one or more input data blocks comprising data fields; user storage constraints; and processor executable instructions that when executed by the processor comprise: a shuffler configured to: anonymize the data fields of each of the one or more input data blocks; an encryptor configured to: generate a cipher key and encrypt, using the cipher key, the anonymized data fields based on the user storage constraints to obtain a ciphertext file comprising ciphertext data blocks; an erasure coder configured to: generate coded chunks from the ciphertext data blocks and erasure coding details; a distributor configured to: distribute the coded chunks to two or more storage providers (706, 708) based on the user storage constraints; and generate distribution details for the distributed coded chunks; wherein the encryptor is further configured to: generate an encryption key for the ciphertext file, wherein the encryption key comprises: the shuffle key, the cipher, the erasure coding details, and the distribution details, wherein the communications interface communicates the encryption key to the user; wherein the executable instructions further comprise: a secret sharer configured to: generate a set of secret shares (746, 748) and secret share keys from the encryption key; a secret sharer distributor configured to: distribute the secret shares to the storage providers, where the secret shares are distributed to storage shares distributed among the providers, each storage share comprising one of the distributed coded chunks. a communications interface and a non-transitory memory coupled with a processor; the communications interface configured to receive input data blocks and user storage constraints from a user; the memory having stored thereon: one or more input data blocks comprising data fields; user storage constraints; and processor executable instructions that when executed by the processor comprise: one or more input data blocks comprising data fields; user storage constraints; and processor executable instructions that when executed by the processor comprise: a shuffler configured to: anonymize the data fields of each of the one or more input data blocks; an encryptor configured to: generate a cipher key and encrypt, using the cipher key, the anonymized data fields based on the user storage constraints to obtain a ciphertext file comprising ciphertext data blocks; an erasure coder configured to: generate coded chunks from the ciphertext data blocks and erasure coding details; a distributor configured to: distribute the coded chunks to two or more storage providers (706, 708) based on the user storage constraints; and generate distribution details for the distributed coded chunks; wherein the encryptor is further configured to: generate an encryption key for the ciphertext file, wherein the encryption key comprises: the shuffle key, the cipher, the erasure coding details, and the distribution details, wherein the communications interface communicates the encryption key to the user; wherein the executable instructions further comprise: a secret sharer configured to: generate a set of secret shares (746, 748) and secret share keys from the encryption key; a secret sharer distributor configured to: distribute the secret shares to the storage providers, where the secret shares are distributed to storage shares distributed among the providers, each storage share comprising one of the distributed coded chunks. a secret sharer configured to: generate a set of secret shares (746, 748) and secret share keys from the encryption key; a secret sharer distributor configured to: distribute the secret shares to the storage providers, where the secret shares are distributed to storage shares distributed among the providers, each storage share comprising one of the distributed coded chunks.