加密程序返回奇怪的字符串进行加密,但在解密后更正字符串

时间:2017-05-06 07:05:37

标签: java encryption xor

我在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;对于加密的字符串。但是,当它解密字符串时,我收到原始输出,表明加密算法有效。

为什么我会收到加密输出的奇怪的框,但是当我解密它时会收到正确的字符串?

1 个答案:

答案 0 :(得分:1)

您可以在加密后使用Base64编码(这是一种最佳做法),这样您就不会得到奇怪的盒子,并且在#34; travel&#34;中没有特殊字符丢失。

一个很好的参考:

Base64 Encoding in Java

你会得到一个像这样的字符串:b2xkIGNyb3cgbWVkaWNpbmUgc2hvdw ==