avax.crypto.BadPaddingException: pad block corrupted 异常,恶心了我半个小时。
废话不多说,上代码
将加密key转为byte数组片段
KeyGenerator keygen=KeyGenerator.getInstance("AES");
SecureRandom securerandom = new SecureRandom(tohash256Deal(key)); 替换为下面的两行
keygen.init(weishu, securerandom);
/**
* SecureRandom 实现完全随操作系统本身的內部状态,
* 除非调用方在调用 getInstance 方法之后又调用了 setSeed 方法;
* 该实现在 windows 上每次生成的 key 都相同,
* 但是在 solaris 或部分 linux 系统上则不同。
* 所以 SecureRandom securerandom = new SecureRandom(tohash256Deal(key)); 替换为下面内容
* 以适应linux的变化
*/
SecureRandom securerandom = SecureRandom.getInstance("SHA1PRNG" );
securerandom.setSeed(tohash256Deal(key));
其他地方不变,即可解决问题。