加密初始化向量失败

时间:2013-02-11 10:36:36

标签: encryption aes pascal initialization-vector

我正面临一个奇怪的问题,我正在使用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

当我在加密阶段使用此功能时,确定,但是当我使用相同的密钥解密文件时,输出是垃圾。但是当我在加密阶段硬编码这个密钥时,解密成功了。

我缺少什么。我将使用简单的随机数生成器。

1 个答案:

答案 0 :(得分:0)

我正在使用AnsiString来存储上下文的密钥。这是真正的问题,因为在pascal AnsiString中不是单字节。由于@CodeInChaos专注于AnsiString,我检查了它并找到了它。所以我已经取代了

Key: AnsiString  

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

它成功运作了。

谢谢@CodeInChaos。