【发布时间】:2014-11-25 14:35:12
【问题描述】:
我有一个值,我用特殊字符编码,然后使用 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())));
任何建议 :-( ?
【问题讨论】:
-
简而言之:使用
String.getBytes(Charset.forName("UTF-8"))和String(arrayOfBytes,Charset.forName("UTF-8")),否则你永远不会知道它使用了哪个字符集 -
@Pablo:从 Java 7 开始,使用
StandardCharsets.UTF_8。 -
哎哟!诚然,当你坚持“公司标准”(又名“Java 6 有效,请勿触摸”)时,就会发生这种情况
-
添加了编码,但这是我在 Netbeans glassfish 上得到的 Z,¡Eð¥Õ[’ý¿È¼jİø»4[ Ã?I¿Ã~Å¡+Y'':ø{@âVމ 在 tomcat 中我知道哪个是正确的Z,¡Eð¥Õ[ ’ý¿È¼jİø»4[ÃÂI¿Ã~Å¡+Y'':ø{@âVކ° 这是错误的 :-( :-( 为什么?为什么?为什么?问号表示错误
标签: java tomcat encryption glassfish base64