Two inputs, A and B, are combined similar to a zipper. The inputs map to positions on one another, recursively, and alter the state of bits at those positions, iteratively mutating every bit in both inputs. A maps to bit x= n + A%bits(B), where n is a nonce that is incremented every iteration of the function. This bit is stored in memory, and B is bit-shifted x>>1. The bit x is transformed with a XOR operation, x⊕A+B%2, and the value loaded onto the last bit of message, previously set to 0 by the bit-shift operation. B (the new value for B) maps to bit y = n + B%bits(A). This bit is stored in memory, and A is bit-shifted y>>1. The bit y is transformed with a XOR operation, y⊕A+B%2, and the value loaded onto the last bit of message. The nonce n is incremented by 1, n += 1.
The process is repeated for every bit in the inputs, both are assumed to be the same bit size. The function is then finalized as C = A⊕B.
In commit-reveal schemes, a person can commit C and the key A, then reveal the lock B.