为什么我需要在此加密中使用Base64

时间:2013-04-20 10:56:39

标签: java security encryption base64

我在java中看到加密。为了生成密钥,他们有

 KeyGenerator keyGen = KeyGenerator.getInstance("DES");
 Key secretKey = keyGen.generateKey();

 byte[] keyBytes = secretKey.getEncoded()
 Key secretKey = keyGen.generateKey();

 byte[] key = secretKey.getEncoded();

 byte[] encodedKey=Base64.encodeBase64(key );

 String keyText = new String(encodedKey);

我的问题是为什么需要使用Base64.encodeBase64(key)。如果我直接使用

会有什么问题
String keyText = new String(key);

我很困惑。请帮帮我。谢谢你...

1 个答案:

答案 0 :(得分:2)

并非每个字节序列都代表有效的Stringyou need to know the character encoding in order to interpret a sequence of bytes as a string。由于Java的char是16位,因此随机的字节序列最终可能表示其中包含无效代码点的字符串。使用Base-64编码可以确保所有元素都是[A-Za-z0-9+/]范围内的有效字符,从而解决了这个问题。