1. A method for anonymizing data, comprising: receiving data to be anonymized by an anonymization system executed on a computing device, the data including a plurality of characters; generating a request for a data encryption key with a corresponding request identifier; generating a masked data encryption key corresponding to the request identifier for the data encryption key by providing a first encryption key, a second encryption key and a master key; masking the master key with the first encryption key using a computer implemented first crypto function to generate a masked master key; and generating the masked data encryption key using a computer implemented second crypto function and the masked master key; storing the corresponding request identifier in a data store and associating the generated masked data encryption key with the stored corresponding request identifier; receiving the masked data encryption key in response to the request; retrieving the data encryption key from the received masked data encryption key; anonymizing the data using an anonymization module to derive anonymized data using the retrieved data encryption key; receiving a subsequent request for a data encryption key with an associated request identifier; and verifying if there is a match between the associated request identifier and the stored corresponding request identifier, and when there is a match, returning the masked data encryption key associated with the stored corresponding request identifier; and when there is no match, generating a new masked data encryption key and responding with the generated new masked data encryption key.