在我的应用程序中,我读取一个文件,计算其MD5哈希值,使用AES128对其进行加密并将其写入文件注释中。
那是因为我需要确保该文件不被操纵。
可悲的是,当我在文件的“注释”属性中写一些东西时,它的MD5会发生变化,我的工作变得毫无用处。
所以,我想读取我的文件,不包括文件的属性,然后才计算我的 HASH。现在我用这个函数读取我的文件:
function MD5File(const FileName: string): string;
var
IdMD5: TIdHashMessageDigest5;
FS: TFileStream;
begin
IdMD5 := TIdHashMessageDigest5.Create;
FS := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
try
Result := IdMD5.HashStreamAsHex(FS)
finally
FS.Free;
IdMD5.Free;
end;
end;
我怎样才能得到“文件属性”的大小?我想它们在页眉或页脚上,所以如果我知道大小,我可以排除文件的第一部分或最后一部分
编辑:更多信息:我存储信息手动编辑文件属性(右键单击-> 属性)我也认为编辑这些信息不能改变我的 MD5 .. 但出于某种原因它确实如此!我阅读了文件并使用我帖子中的函数计算了它的 MD5。我的问题是,当我在注释中写入任何值时,文件的哈希值会发生变化,并且我正在编写基于文件哈希值的字符串。
我想我会在计算哈希之前擦除“评论”属性。