1

奇妙な問題に直面しています。cfb モードで aes 暗号化を使用しています。順調に進んでいます。固定 IV で暗号化をテストしました。しかし、ランダム IV を使用すると問題が発生します。詳しくいきます。

function Random16DigitsString: AnsiString;
var
  i: Integer; c0: byte;
begin
  Randomize;
  c0:=ord('0');
  SetLength(Result, 16);
  Result[1] := char(c0+Random(9)+1);
  for i:=2 to 16 do Result[i] := char(c0+Random(10));
end;   

上記のコードのサンプル出力は 8229343736510872 です。

この関数を暗号化フェーズで使用すると問題ありませんが、同じキーを使用してファイルを復号化すると、出力がガベージになります。しかし、暗号化フェーズでこのキーをハードコーディングすると、復号化が正常に行われます。

私が欠けているもの。私は単純な乱数ジェネレーターを使用しています。

4

1 に答える 1

0

コンテキストのキーを格納するために AnsiString を使用していました。Pascal では AnsiString が 1 バイトではないため、これが本当の問題でした。@CodeInChaos が AnsiString に注目していたので調べてみたらありました。だから私は交換した

Key: AnsiString  

Key : Array [0..32] of Char;

そしてそれはうまくいきました。

ありがとう@CodeInChaos。

于 2013-02-12T10:02:47.253 に答える