因此,我正在尝试编写一个小解密程序,但遇到了一些麻烦。我将 XOR 应用于带有 'FF' 的字符(反转所有位),我通过将字符串转换为字节数组然后对其应用 XOR 来做到这一点。但是这些字符是 Shift-JIS 编码的,有些东西不起作用。当我尝试使用普通字母的方法时,它似乎有效,但是当它使用日文字符时出现问题。
public void sampleMethod(String a)
{
try {
String b = "FF";
byte[] c = a.getBytes("Shift_JIS");
byte[] d = b.getBytes("Shift_JIS");
byte[] e = new byte[50];
for (int i=0; i<c.length; i++)
{
e[i] =(byte)(c[i]^d[i%2]);
}
String t = new String(e, "Shift_JIS");
System.out.println(t);
}
catch (UnsupportedEncodingException e)
{
}
}
但是当我坚持使用日文字符时,它会将它们中的每一个都转换为“yyyyyy”。我尝试打印出字节数组以查看问题,它表明每个字符都存储为“63”。如何正确存储字符?实际上,我将如何在 Shift-JIS 字符上使用 XOR?
我使用 XOR 是因为我基本上只想将位从 0010 反转为 1101,然后将其改回字符。那可能吗?
谢谢
例如,这是我的输入:“始めまして”,我得到的是:“yyyyy”当我执行“hello there”之类的操作时,我得到“.#**)f2.#4#”