Ton*_*Nam 2 security encryption encryption-symmetric
我知道尝试实现自己的加密算法是个坏主意.这是我认为不是的一个原因:
例如,假设我想发送plainText = new byte[]{2,5,1,6,7}给bob.
如果我使用AES加密或其他熟知的算法,那么我将:
cipherText = Aes.Encrypt(plainText, key, iv); // now I have some cipher text that is not readable to anyone if they do not have the key and iv vector.
Run Code Online (Sandbox Code Playgroud)
如果有人想要解密该消息,那么他们将不得不做以下事情:
newPlainText = Aes.Decrypt(cipherText, key, iv);
Run Code Online (Sandbox Code Playgroud)
现在我的问题是AES如何知道你是否输入了正确的密钥?我认为使用一种不会出现暴力攻击的算法会更安全.换句话说,如果黑客知道你使用了AES,它可以继续尝试很多密码,直到method Aes.DecryptThorw也不例外.现在考虑这个算法:
假设我想将相同的字节数组发送{2,5,1,6,7}到bob.我的加密算法可能如下所示:
password is ="securePassword";
我将迭代我的纯文本上的每个字节,并对密码上每个字符的ASCII值执行Xor运算符.例如,第一个字节将是2 Xor (ASCII value of 's')下一个值将5 Xor (ASCII value of 'e')结束我将结束{2 Xor 's', 5 Xor 'e', 1 Xor 'c', 6 Xor 'u', 7 Xor 'r'} 这个算法的好处是,如果你有正确的密钥,你现在永远不会!
使用这种算法,不可能知道你是否有写密钥,这使得我无法破译它.如果您使用众所周知的算法,如果您的密码不长,则会提示您进行暴力攻击.
*所以我的问题是众所周知的AES等对称加密算法如何知道你是否输入了正确的密钥?有一个算法,你不知道你是否提供正确的密钥将不会更安全?*