0

私は現在、復号化ルーチンを作成しようとしていますが、暗号化ルーチンの手順の1つは次のとおりです。

xor eax,edx  // xors eax(current character) and edx (the key)

明らかに私は鍵を知っているので、この操作を元に戻す方法はありますか?

4

2 に答える 2

4

XOR は独自の逆です。(ビット単位: 0 で XOR を実行しても少しは変わりません。1 で XOR を実行すると反転し、もう一度実行すると元に戻ります。)

「暗号化された」値とキーを再度 XOR するだけです。

encrypted = plain XOR key
encrypted XOR key = (plain XOR key) XOR key
encrypted XOR key = plain XOR (key XOR key)
encrypted XOR key = plain XOR (000...0)
encrypted XOR key = plain
于 2012-04-15T18:38:33.463 に答える
0

XOR の動作を視覚化すると役立つ場合があります。XOR 演算は、ビットがオペランドの 1 つだけに設定されている場合にのみビットを設定します。両方に設定されている場合、結果は 0 です。これは「eXclusive」です。それ以外の場合は、OR のように動作します。

source : 0011
key    : 0101
xor-ed : 0110

したがって、edx で同じキーを使用して eax (暗号化された値を含む) を再度 XOR すると、元のソースが得られます。

crypted: 0110
key    : 0101
xor-ed : 0011
于 2012-04-17T04:09:59.730 に答える