首页 > 解决方案 > 使用 XOR 加密 Cyrillic 中的字符串

问题描述

我想用 XOR 加密字符串。源文本是西里尔文。加密后,我得到了象形文字,我该如何修复它?我将使用 UTF-8 编码。

String text = "Какой-нибудь русский текст"; // some cyrillic text
String sKey = LFSR(); // return string "10011010" for example

System.out.println("[PSP]: key: " + sKey); // output: 10011010

byte[] txt = text.getBytes(StandardCharsets.UTF_8);
byte[] key = sKey.getBytes(StandardCharsets.UTF_8);

byte[] res = new byte[txt.length];

for (int i = 0; i < txt.length; ++i) {
    res[i] = (byte) (txt[i] ^ key[i % key.length]);
}

try {
    System.out.println(new String(res, StandardCharsets.UTF_8)); 
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}

输出:

��������������������������������������������</p>

我认为这是因为字节值是负数。

标签: java

解决方案


推荐阅读