Search code examples
encryptionkeyaesxorkey-management

How do I separate an encryption key into parts?


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.