In order to choose the right algorithm that best fits the user requirements, it is important to have a clear description about the algorithm behavior.
For example, the Secure Lookup should work in this way (or equivalent way):
- it takes the original value, and encrypts it with the internal secret key
- it calculates the numeric hash value of the encrypted original value
- it calculates the N-modulus of the numeric hashed value, where N is the number of text rows of the SL file (provided by the user).
- it gets the value from the text row n, where n is the N-modulus from the previous step.
With this description I know that if I change the secret key of the masking engine then the numeric hash value changes and so the index of the text row changes and so the output of the SL Algorithm changes. With this description I know that if the secret key does not change, then the SL Algorithm generates the same output when it takes the same value as input -> this preserve the Referential Integrity.
Last, with this description, I know that because the algorithm uses a combination of hash and encryption functions (with an unknown key), then the behavior of the algorithm is deterministic, but is unpredictable: so it preserve Referential Integrity, but is unbreakable. Because the hash algorithm can generate collisions, I know that it cannot preserve uniqueness.
How does the Mapping Algorithm work internally?
Thanks.
Gianpiero