情况说明:直接用main方法运行时是没有问题的,web程序一放入tomcat中就会出现解密时乱码。
解决办法:
在解密时,返回string时对数组需要指定UTF-8编码。
public static String decode(String desStr) { Base64 base64 = new Base64(); byte[] keybyte = hex(KEY); byte[] src = null; try { src = base64.decode(desStr.getBytes("UTF-8")); // 生成密钥 SecretKey deskey = new SecretKeySpec(keybyte, "DESede"); // 解密 Cipher c1 = Cipher.getInstance("DESede"); c1.init(Cipher.DECRYPT_MODE, deskey); return pwd; } catch (java.security.NoSuchAlgorithmException e1) { e1.printStackTrace(); } catch (javax.crypto.NoSuchPaddingException e2) { e2.printStackTrace(); } catch (java.lang.Exception e3) { e3.printStackTrace(); } return null; }
本文介绍了解决在Tomcat环境下运行Web程序时出现的解密乱码问题。通过在解密过程中指定UTF-8编码,成功避免了乱码的出现。此问题常见于从main方法运行正常,但在部署到Tomcat服务器后出现乱码的情况。
2966

被折叠的 条评论
为什么被折叠?



