0

String (stringToEncrypt) があり、AES-128 で暗号化され、byte[] を取得しています。そのバイト[]をデータベースに文字列として書き込もうとしています。以下の例:

String encryptedString = new String(aes.encode(stringToEncrypt.getBytes()));

"encode" メソッドは byte[] をパラメーターとして取得し、byte[] を返します。「aes」オブジェクトは、AES-128 エンコード処理を行います。問題は、encryptedString を DB に書き込もうとすると、DB に書き込まれる一部の文字が「String encryptedString」と同じではないことです。問題はDBの文字セットまたは私のコードにあると思います。何か提案はありますか?

4

2 に答える 2

1

ええ、それは文字エンコーディングの問題です。以前、別の場所で見たことがあります。base64 でエンコードするか、biginteger として保存します。

// byte array[];
BigInteger value = new BigInteger(array);

BigInteger でチートして、Base64 のものにも使用できます。

String b64 = value.toString(64);

BigInteger のドキュメント

于 2012-07-18T07:02:51.320 に答える
1

String問題のデータ型が間違っています。生のバイトを文字列にエンコードする必要がある場合は、base64を使用してください。

可能であればbyte[]、データベースに直接格納してみてください。

于 2012-07-18T07:03:30.647 に答える