首先,我是密码学的新手。 假设我使用AES 128位加密加密普通测试并传递给接收器。密钥也传递给接收方。在接收方,如何在没有完全解密消息的情况下检查KEY是否正确。 我的意思是我们可以像这样检查
IF(KEY==something)
DECRYPT
ELSE
NOT a correct key.
与IV有什么关系吗? 我真的不明白IV是什么。
答案 0 :(得分:4)
首先,正如您可能确定的那样,将密文和密钥传递给不安全的通道是不安全的。将密文和密钥保存在同一个地方与保留明文相同,所以不要这样做。
密码系统不是确定给定密钥对密文是否正确,而是确定密文在解密之前是否合法。最常见的方法是使用MAC或消息验证代码。 HMAC是执行此操作的常用方法,与GCM等认证块模式一样。
最后,使用IV来确保重复的明文块不会导致重复的密文块。例如。在ECB模式中,不使用IV,每个相同的明文块将在给定密钥下加密到相同的密文。应用IV(在CBC等模式下)将确保相同的明文块看起来不同,因为从IV开始的链式XOR操作。
要解决您的问题,请使用GCM模式或使用KDF导出HMAC的对称密钥和密钥。