我有一个值,我用特殊字符编码,然后使用base64再次编码,我的开发环境是标准使用Netbeans glassfish服务器,但网站托管在Tomcat服务器上,我似乎得到不同的结果完全相同解密代码/功能,它在netbeans中工作得很好,但在tomcat上失败,使我的特殊字符解码代码失败,因为字符不一样
String key = enc_key;
// Create key and cipher
Key aesKey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
// decrypt the text
cipher.init(Cipher.DECRYPT_MODE, aesKey);
strDecrypted = new String(cipher.doFinal(Base64.decodeBase64(encrypted.getBytes())));
任何建议:-(?
答案 0 :(得分:2)
您在未指定编码的情况下使用String(byte[])
构造函数。别这么做。
同样,也不要在未指定编码的情况下调用String.getBytes()
。您已经在我们向您展示的代码中执行了两次 - 我的猜测是您在加密数据时执行了此操作。 始终指定您要使用的编码。
现在我们不知道您正在使用哪个Base64
课程,但我个人会尝试找到一个接受String
解码的方法 - Base64是逻辑上是一个byte[] <==> String
转换方案,所以在一个不错的API中你有String encode(byte[])
和byte[] decode(String)
。