我正面临一个奇怪的问题,我正在使用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
当我在加密阶段使用此功能时,确定,但是当我使用相同的密钥解密文件时,输出是垃圾。但是当我在加密阶段硬编码这个密钥时,解密成功了。
我缺少什么。我将使用简单的随机数生成器。
答案 0 :(得分:0)
我正在使用AnsiString来存储上下文的密钥。这是真正的问题,因为在pascal AnsiString中不是单字节。由于@CodeInChaos专注于AnsiString,我检查了它并找到了它。所以我已经取代了
Key: AnsiString
到
Key : Array [0..32] of Char;
它成功运作了。
谢谢@CodeInChaos。