サーバーに暗号化された文字列として送信する前に、JNCryptor ライブラリを使用して文字列を暗号化しています。これが私のコードです:
String teststring = "Hello World";
JNCryptor cryptor = new AES256JNCryptor();
byte[] plaintext = teststring.getBytes();
String password = "test";
try {
byte[] ciphertext = cryptor.encryptData(plaintext, password.toCharArray());
String a = new String(ciphertext);
return a;
} catch (CryptorException e) {
// Something went wrong
e.printStackTrace();
return "0";
}
ただし、文字列「a」をサーバーに送信すると、認識できない文字がたくさん含まれています。これに関する説明を読みました :
文字列はバイナリ データの適切なコンテナーではなく、暗号文はバイナリ データです。特定の文字エンコーディングでは、すべてのバイトおよびバイト シーケンスが文字を表すわけではなく、表現できないバイトまたはシーケンスが見つかった場合、エラー文字に変換されます。明らかに、このエラー文字を一意のバイトまたはバイト シーケンスに変換することはできません (これは多対 1 のマッピングです)。
このアドバイスは正しいですか?その場合、byte[] を文字列に正しく変換するにはどうすればよいですか? サーバーに読み取り可能に保存できるようにするには?