我想知道,结论是否公平,XOR字符串加密不如其他加密方法安全,Blowfish说
这是因为对于这两种方法,他们的输入都是
string XOR(string value,string key)
{
string retval(value);
short unsigned int klen=key.length();
short unsigned int vlen=value.length();
short unsigned int k=0;
short unsigned int v=0;
for(v;v<vlen;v++)
{
retval[v]=value[v]^key[k];
k=(++k<klen?k:0);
}
return retval;
}
Run Code Online (Sandbox Code Playgroud)
有没有证据表明如果选择相同的密钥,XOR加密方法比Blowfish更容易被"破坏" ?
如果您尝试使用多次编码相同的字符串,则XOR加密非常不安全,因为它允许恶意用户通过对其加密进行异或来恢复两个消息的XOR.如果他们可以以某种方式诱骗您对已知字符串进行异或,那么他们可以恢复您的密钥并完全破坏加密.
更高级的加密算法(如Blowfish和AES)具有更强大的安全保障,并且假设它们非常强大,即使攻击者允许您加密已知数据,它们也无法恢复您的密钥或恢复任何单个位.在安全性很重要的任何情况下,应始终使用它们而不是自己的自定义加密.
有趣的是,XOR加密在每次调用时使用新的(随机选择的)密钥,从信息理论的角度来看,它在密码学上是不可破解的.这被称为"一次性垫",理论上可以在某些设置中使用.
事实上,"XOR加密"被证明是非常安全的防止窃听(当有人可以改变你的流时你仍然有问题),给定一个加密密钥是
否则,你陷入了困境.如果您的位不是随机的,您可以提取有关明文位的一些信息.如果你重复使用你的密钥,你可以对两个密文进行异或,以获得明文的异或,或者,如果有人让你发布一条他知道的明文的消息,他就可以提取密钥(他们实际上是为ENIGMA做的在二战中,这不是不现实的!).如果密钥短于消息,则可以使用统计信息 - 比如它们的密钥长度为10个字节,您可以将密文分成10个部分,这些部分都使用相同的字节进行编码,并使用频率分析...只是为了命名几次袭击.
| 归档时间: |
|
| 查看次数: |
653 次 |
| 最近记录: |