だから私は小さな復号化プログラムを書こうとしていますが、少し問題が発生しています。「FF」(すべてのビットを反転) を使用して文字に XOR を適用しています。これは、文字列をバイト配列に変換してから 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 を使用するにはどうすればよいでしょうか。
基本的にビットを 0010 から 1101 に反転してから文字に戻したいので、XOR を使用しています。それは可能ですか?
ありがとう
たとえば、これは私の入力でした: '始めまして" そして、出力されるのは: "yyyyy" そして、"こんにちは" のようなことをすると、".#**)f2.#4#" が得られます。