Windows下AES加解密正常,Linux加密正常解密异常
在进行AES加解密时,Windows环境下表现正常,但在Linux环境下,加密操作正常,解密却出现异常,具体表现为javax.crypto.BadPaddingException。问题的根源在于SecureRandom实现,该实现完全依赖于操作系统本身的内部状态。在Windows上,每次生成的密钥都是相同的,而在Solaris或部分Linux系统上则不同。为了解决这一问题,建议将SecureRandom的生成方式进行调整。替换原有代码:SecureRandom securerandom = new SecureRandom(tohash256Deal(key));,为:KeyGenerator keygen=KeyGenerator.getInstance("AES"); SecureRandom securerandom = new SecureRandom(tohash256Deal(key)); 替换后的代码通过keygen.init(weishu, securerandom);来适应Linux环境的变化。
用户评论