我正在使用PBE加密来加密和解密Android应用程序上的某些文本,但是当我使用错误的私钥解密文本时,我收到BadPaddingException:消息为“ pad block baded”的消息.
我的问题是,由于我不太熟悉Java加密,因此这是否是加密API的正常行为,因为在输入错误密钥的情况下我需要做一些逻辑工作,但我不知道私有密钥密钥,也不能将其存储在任何地方(仅存储加密和解密的校验文本).
谢谢,
米海
解决方法:
通常,大多数密钥不匹配都会导致“错误的填充错误”.但这也不是100%可靠的.例如,在使用PKCS#5填充进行对称加密(一种非常常见的填充数据的方式)的情况下,大约0.4%的错误密钥不会导致错误的填充.解密后的数据仍将是垃圾,但出于偶然的机会,该垃圾最终以有效填充结尾.您的应用程序不得弄清楚解密失败是由于错误的填充还是由于填充无效而造成的垃圾:该信息(密钥是否为产生正确填充的0.4%的密钥的一部分)是泄漏,有严重的后果.这样就对SSL连接进行了一些攻击.