我在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);
我很困惑。请帮帮我。谢谢你...
答案 0 :(得分:2)
并非每个字节序列都代表有效的String
:you 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+/]
范围内的有效字符,从而解决了这个问题。