Glassfish和Tomcat中decodeBase64的结果不同

时间:2014-11-25 14:35:13

标签: java tomcat encryption glassfish base64

我有一个值,我用特殊字符编码,然后使用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())));

任何建议:-(?

1 个答案:

答案 0 :(得分:2)

您在未指定编码的情况下使用String(byte[])构造函数。别这么做。

同样,也不要在未指定编码的情况下调用String.getBytes()。您已经在我们向您展示的代码中执行了两次 - 我的猜测是您在加密数据时执行了此操作。 始终指定您要使用的编码。

现在我们不知道您正在使用哪个Base64课程,但我个人会尝试找到一个接受String解码的方法 - Base64是逻辑上是一个byte[] <==> String转换方案,所以在一个不错的API中你有String encode(byte[])byte[] decode(String)