检查JAVA中的加密密钥正确性

我正在使用BouncyCastle在CBC模式下使用AES和PKCS5填充来加密/解密某些文件:

Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding", "BC");

现在有两个问题:

>如何检查提供的解密数据密钥是否正确?
>如何检查加密输入是否未触及(例如,用户未使用HEX编辑器更改)?

谢谢

解决方法:

您可以使用类似CCM或GCM的AEAD mode,代替CBC.这些模式对加密消息进行身份验证,因此如果使用了错误的密钥,或者密码文本已被更改,您可以检测到它.但是你无法区分这些情况.

Java 7的GCM加密API支持,但Oracle Java实现附带的SunJCE提供程序尚不支持它.您可以通过BouncyCastle等第三方提供商获得支持.

如果您使用其他加密服务(如数字签名或消息验证代码),则可以实现相同的功能.

上一篇:Oracle数据库出现[23000][2291] ORA-02291: integrity constraint (SIMTH.SYS_C005306) violated异常


下一篇:Integrity Pro for Mac(网站死链查找工具) 9.1.0特别版