我在Java中执行xor加密。它加密一个字节数组,将其转换为String,然后打印String。
然而,当我执行它时,我会感到很奇怪"盒子"在输出中(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);
当我运行此代码时,它会打印出奇怪的&#34;框&#34;对于加密的字符串。但是,当它解密字符串时,我收到原始输出,表明加密算法有效。
为什么我会收到加密输出的奇怪的框,但是当我解密它时会收到正确的字符串?
答案 0 :(得分:1)
您可以在加密后使用Base64编码(这是一种最佳做法),这样您就不会得到奇怪的盒子,并且在#34; travel&#34;中没有特殊字符丢失。
一个很好的参考:
你会得到一个像这样的字符串:b2xkIGNyb3cgbWVkaWNpbmUgc2hvdw ==