在爪哇中,为了加密目的,我正在生成和序列化对称密钥:
KeyGenerator keyGen = KeyGenerator.getInstance(algorithm);
SecretKey symmetricKey = keyGen.generateKey();
Base64.encode(symmetricKey.getEncoded(), new FileOutputStream(filename));
其中base64来自于bouncycastle加密包,算法是aes。
当与Oracle(Sun)JVM 1.6.0_21一起使用时,该密钥会完美地从Windows移到Linux(甚至在32/64位操作系统之间)。
在OS X(Intel)上,使用苹果的JVM,可以毫无例外地加载密钥,但在Windows或Linux上加密的每个字符串都会生成一个badpaddingException。
使用以下代码对字符串进行编码:
Cipher cipher = Cipher.getInstance(algorithm, "BC");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
encryptedString = new String(Base64.encode(cipher.doFinal(string.getBytes())));
其中算法是aes。
有什么线索吗?