Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual c++ 如何在汇编程序中反转XOR操作?_Visual C++_Assembly_Encryption - Fatal编程技术网

Visual c++ 如何在汇编程序中反转XOR操作?

Visual c++ 如何在汇编程序中反转XOR操作?,visual-c++,assembly,encryption,Visual C++,Assembly,Encryption,我目前正在尝试编写解密例程,加密例程中的一个步骤是: xor eax,edx // xors eax(current character) and edx (the key) 很明显,我知道这个键,所以有什么想法可以反转这个操作吗?XOR是它自己的逆运算。(按位:与0的XOR'ing不会有任何变化。与1的XOR'ing将翻转它,再次执行将翻转它。) 只需再次对“加密”值和密钥进行异或运算: encrypted = plain XOR key encrypted XOR key = (plai

我目前正在尝试编写解密例程,加密例程中的一个步骤是:

xor eax,edx  // xors eax(current character) and edx (the key)
很明显,我知道这个键,所以有什么想法可以反转这个操作吗?

XOR是它自己的逆运算。(按位:与0的XOR'ing不会有任何变化。与1的XOR'ing将翻转它,再次执行将翻转它。)

只需再次对“加密”值和密钥进行异或运算:

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
XOR是它自己的逆运算。(按位:与0的XOR'ing不会有任何变化。与1的XOR'ing将翻转它,再次执行将翻转它。)

只需再次对“加密”值和密钥进行异或运算:

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

它可能有助于可视化XOR的行为。如果仅在一个操作数中设置了位,则异或操作仅设置一位。如果在这两个选项中都设置了,则结果为0。这是“排他性的”,否则它的行为就像或:

source : 0011
key    : 0101
xor-ed : 0110
因此,如果您在edx中使用相同的密钥再次执行XOR eax(现在包含加密值),您将获得原始源代码:

crypted: 0110
key    : 0101
xor-ed : 0011

它可能有助于可视化XOR的行为。如果仅在一个操作数中设置了位,则异或操作仅设置一位。如果在这两个选项中都设置了,则结果为0。这是“排他性的”,否则它的行为就像或:

source : 0011
key    : 0101
xor-ed : 0110
因此,如果您在edx中使用相同的密钥再次执行XOR eax(现在包含加密值),您将获得原始源代码:

crypted: 0110
key    : 0101
xor-ed : 0011

所以,如果我用1对eax进行异或,我将得到原始值?:)对不起,我还在学习汇编程序。@JohnPeters:编辑我的答案以澄清。因此,如果我用1对eax进行异或,我将得到原始值?:)对不起,我还在学习汇编程序。@JohnPeters:编辑我的答案以澄清。