如何加密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 Codecthis public domain code

然后,当您需要解密时,只需执行所有步骤即可-从base64转换回二进制文件,解密,然后使用new String(decryptedBytes, "UTF-8")(或您决定使用的任何编码)创建字符串。

关于java - Cookie加密,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7389420/

10-13 05:04