小智 68
说完逻辑操作XOR是所有密码术中唯一使用的逻辑操作并不完全正确,但它是唯一一种专门使用它的双向加密方式.
这是解释:
想象一下,你有一个二进制数字10101
字符串10111,你用你得到的字符串XOR00010
现在你的原始字符串被编码,第二个字符串成为你的密钥,如果你用你的编码字符串对你的密钥进行异或,你会得到你的原始字符串.
XOR允许您轻松加密和解密字符串,其他逻辑操作则不然.
如果你有一个更长的字符串,你可以重复你的密钥,直到它足够长,例如,如果你的字符串是1010010011那么你只需简单地写你的密钥两次,它将成为1011110111和新的字符串XOR它
Tia*_*ago 37
我可以看到两个原因:
1)(主要原因)XOR不泄漏有关原始明文的信息.
2)(很好的理由)XOR是一个渐开线函数,即,如果你应用XOR两次,你会得到原始的明文(即,你的明文XOR(k, XOR(k, x)) = x在哪里x,k是你的关键).内部XOR是加密,外部XOR是解密,即,完全相同的XOR函数可以用于加密和解密.
举例说明第一点,考虑AND,OR和XOR的真值表:
0和0 = 0
0和1 = 0
1 AND 0 = 0
1和1 = 1(泄漏!)
0 OR 0 = 0(泄漏!)
0 OR 1 = 1
1 OR 0 = 1
1 OR 1 = 1
0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0
在一切都第一列是我们的输入(即纯文本).在第二列是我们的关键和最后一列是你输入"混合"(加密)使用的具体操作(即密文)的关键结果.
现在,想象一下攻击者可以访问一些加密字节,例如:10010111,他想获得原始明文字节.
假设使用AND运算符以便从原始明文字节生成此加密字节.如果使用AND,那么我们肯定知道每次我们在加密字节中看到位'1',那么输入(即第一列,纯文本)也必须是'1',按照真值表和.如果加密位是'0',我们不知道输入(即纯文本)是'0'还是'1'.因此,我们可以得出结论,原始纯文本是:1 _ _ 1 _ 111.因此原始纯文本的5位被泄露(即,可以在没有密钥的情况下访问).
将相同的想法应用于OR,我们看到每次在加密字节中找到'0'时,我们知道输入(即纯文本)也必须是'0'.如果我们找到'1',那么我们不知道输入是'0'还是'1'.因此,我们可以得出结论输入纯文本是:_ 00 _ 0 _ _ _.这次我们能够泄漏原始纯文本字节的3位,而不知道关于密钥的任何信息.
最后,使用XOR,我们无法获得原始明文字节的任何位.每当我们在加密字节中看到'1'时,'1'就可以从'0'或'1'生成.同样的事情是'0'(它可能来自'0'或'1').因此,不会从原始明文字节泄漏单个位.
Anu*_*yal 32
主要原因是如果具有未知分布R1的随机变量与具有均匀分布的随机变量R2进行异或,则结果是具有均匀分布的随机变量,因此基本上您可以容易地随机化偏置输入,这是其他二元运算符所不可能的.
XOR是唯一直接使用的门,因为无论输入是什么,另一个输入总是对输出产生影响.
但是,它不是加密算法中使用的唯一门.老式密码学可能也是如此,这种类型涉及大量的位洗牌和异或旋转缓冲区,但对于基于素数的加密,您需要通过XOR实现的各种数学.