【发布时间】:2013-08-17 16:28:31
【问题描述】:
在下面的 sn-p 中,我尝试以简单的字符串格式打印encrypted array。
KeyGenerator keyGenerator = KeyGenerator.getInstance("Blowfish");
SecretKey secretKey = keyGenerator.generateKey();
Cipher cipher = Cipher.getInstance("Blowfish");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
String input = "password";
byte encrypted[] = cipher.doFinal(input.getBytes());
String s = new String(encrypted);
System.out.println(s);
但我得到的是 `┐╫Y²▓ô┴Vh¬∙:╪⌡¶ 。为什么 ?如何以正确的字符串格式打印它?
【问题讨论】:
-
好吧,你加密了一个字符串。这就是您打印它时得到的 - 加密不一定将可读字符串转换为另一个可读字符串......这就是您想要的:其他人无法看到它是什么。你需要先解密。
-
@ppeterka 这不是加密字符串。
-
不要尝试将二进制数据放入字符串中。这取决于平台,只会导致问题。如果您需要它作为字符串(例如可移植地保存到文本文件),请使用 base64。
-
顺便说一句,
input.getBytes()将使用平台默认编码。不是一个好主意。你应该总是在像这样转换时指定一个编码 - 它通常应该是 UTF-8。 -
@saplingPro:要问自己一个重要问题:为什么您期望您的代码会生成字节数组的十六进制表示?
标签: java cryptography bytearray