1

独自の AES コードを実装していますが、復号化中にいくつかの問題が発生しています。

byte[] output;
output = Encrypt(EncryptBufferInput);//encrypt "12",output[] is 300532188151293E4ACA3BA529B821C1
str.Append(Encoding.ASCII.GetString(output) );

output = Decrypt(DecryptBufferInput);//in hex, DecryptBufferInput should be "300532188151293E4ACA3BA529B821C1"
str.Append(Encoding.ASCII.GetString(output));//does not decrypt back to "12"

したがって、「12」を暗号化しようとすると、16 進数で「300532188151293E4ACA3BA529B821C1」という値が返されます。「12」に復号化しようとすると、DecryptBufferInput が「300532188151293E4ACA3BA529B821C1」ではなく、他の値であるため、間違った値が返されます...最初のいくつかの値のみが同じです。EncryptBufferInput と DecryptBufferInput はどちらも byte[] 配列であり、Encoding.ASCII.GetBytes(string) を使用してバイト配列に対応する文字列 (暗号化する文字列または復号する文字列) を入力します。私は何を間違っていますか??

4

2 に答える 2

4

取得するバイナリはテキスト データ表すものではないためEncrypt、. 代わりに使用し、それを逆にします。も参照してくださいEncodingConvert.ToBase64StringConvert.FromBase64String

デコード ステップでは、順序を逆にする必要があります。したがって、文字列入力を取得する場合は、次のものが必要になります。

暗号化するには:

  • 文字列で開始:"12"
  • Encoding(できればEncoding.UTF8) を使用byte[]して暗号化する
  • 暗号化されたものを取得するには、暗号化されていないものEncryptと一緒に使用しますbyte[]byte[]
  • Convert.ToBase64String必要に応じて、それを文字列として表すために使用します
  • 暗号化された文字列で終わる

解読するには:

  • 暗号化された文字列で開始
  • Convert.FromBase64String暗号化されたbyte[]
  • 暗号化されたものと一緒に使用Decryptして、暗号化さbyte[]れていないものを取得しますbyte[]
  • 同じ ものを使用しEncodingて文字列を取得します
  • 文字列で終了:"12"
于 2013-02-27T09:30:24.367 に答える
0

どこに設定EncryptBufferInputDecryptBufferInputますか?あなたEncryptDecryptメソッドは両方とも文字列を取ると思うので、これを試してみます:

byte[] output = Encrypt(EncryptBufferInput);
string encryptedOutput = Convert.ToBas64String(output);
str.Append(encryptedOutput);

byte[] decrypted = Decrypt(Convert.FromBase64String(encryptedOutput));
string decryptedOutput = Encoding.ASCII.GetString(decrypted);
str.Append(decryptedOutput);

彼らがかかる場合byte[]

byte[] output = Encrypt(EncryptBufferInput);
string encryptedOutput = Convert.ToBase64String(output);
str.Append(encryptedOutput);

byte[] decrypted = Decrypt(output);
string decryptedOutput = Encoding.ASCII.GetString(decrypted);
str.Append(decryptedOutput);

注意してください: ASCII とタイ語、ドイツ語、ロシア語、ギリシャ語 (およびその他の多く) はうまく連携できません。Unicode または少なくとも UTF8 を使用してください。

于 2013-02-27T09:30:16.507 に答える