How do I separate an encryption key into parts?
-
20-06-2021 - |
Question
I have a 128 bit encryption key that I would like to break up into three parts that when XOR'ed together reproduce the key.
How do I do this?
Solution
Pick two other 128 bit values at random (random_1 and random_2), then work out the equations to see how it works:
key ^ random_1 = xor_1
Now split xor_1 the same way:
xor_1 ^ random_2 = xor_2
Flipping that equation around, we get:
xor_1 = xor_2 ^ random_2
Now substitute back into the first equation:
key = random_1 ^ xor_2 ^ random_2
So your code will just do xor = key ^ random_1 ^ random_2
and you distribute everything but the key.
OTHER TIPS
Just XOR the salt values in and then XOR them out to reverse it.
If key' = key ^ salt1 ^ salt2, then key = key' ^ salt1 ^ salt2.
It's pretty trivial to implement, but it's also pretty trivial to reverse engineer.
What are you trying to protect with this, and who are you trying to protect it from?