我最近使用 PyCrypto 在一个项目中使用 AES 编写了自己的加密方法。我使用哈希生成一个 32 字节的密码,并使用 CBC 将其提供给 AES-256 位加密。文件输入是使用 PKCS#7 填充以符合可被 16 整除的填充。
我可以毫无意外地加密和解密文件,并且最初与输出文件一起加密的输入文件具有相同的 SHA-256 哈希值。
我发现的唯一问题是,如果我提供了错误的密码,解密仍然会发生。这是我正在做的事情的一个问题,因为如果密码错误,我需要快速解密失败。
我怎样才能做到这一点?我听说过其他 AES 加密方法,但 PyCrypto 似乎只支持 ECB、CBC、CFB、OFB、CTR 和 OpenPGP。如何实现加密的强 AES,如果没有正确的密码,它将无法解密?