如何加密Cookie,因为它仅接受US-ASCII字符?当我使用下面的代码时,它将生成US_ASCII之外的字符。如何限制加密字符不超出US_ASCII?
key = KeyGenerator.getInstance(algorithm).generateKey();
cipher = Cipher.getInstance("DESede");
messageSource.getMessage("encryption.algorithm",null,localeUtil.getLocale());
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] outputBytes = cipher.doFinal(input.getBytes());
最佳答案
首先:不要在未指定编码的情况下使用String.getBytes
,最好是可以处理所有Unicode的编码,例如UTF-8。
其次:您提供的代码根本不会生成字符-它生成字节。您不能将这些字节视为已编码的文本,而不能视为已编码的文本。相反,您应该将它们转换为base64,例如使用Apache Commons Codec或this public domain code。
然后,当您需要解密时,只需执行所有步骤即可-从base64转换回二进制文件,解密,然后使用new String(decryptedBytes, "UTF-8")
(或您决定使用的任何编码)创建字符串。
关于java - Cookie加密,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7389420/