-2
我正在Java中执行xor加密。它加密一个字节数组,将其转换为一个字符串,然后打印该字符串。但是,当我执行它时,输出(Eclipse控制台)中会出现奇怪的“框”。加密程序返回奇怪的字符串进行加密,但解密后的字符串正确
算法代码:
for(int i = 0; i < messageArr.length; i++)
{
encryptedMessage[i] = (byte) (messageArr[i]^codebookArr[i]);
}
String eMessage = new String(encryptedMessage);
return eMessage;
的main
方法:
String lMessage = e.xorEncrypt(message, codebook);
System.out.println("Encrypted message: " + lMessage);
String uMessage = e.xorEncrypt(lMessage, codebook);
System.out.println("Unencrypted message: " + uMessage);
当我运行这段代码,它打印的加密字符串奇怪的 “盒子”。但是,当它解密字符串时,我会收到原始输出,显示加密算法的工作原理。
为什么我收到加密输出的奇怪盒子,但解密时输入正确的字符串?
你能提供'message'和'codebook'的数据? –
你得到盒子,因为它们是不可读的ASCII字符 –
你试图使用平台默认编码将任意二进制字节转换为字符串。你不能指望只取回有效的,可打印的字符。并非所有字节序列在所有编码中都是有效的字符序列,并非所有字符都可打印。 –