我正在使用Delphi从pdf文件生成哈希MD5。我想生成与CouchDB附件哈希相同的哈希,但是得到不同的结果。
我的生成哈希的函数:
function TPliki.generujHashMD5(zawartoscPliku: TMemoryStream): string;
var
tekstPliku: string;
begin
setString(tekstPliku, PAnsiChar(zawartoscPliku.Memory), zawartoscPliku.Size);
result := THashMD5.GetHashString(tekstPliku);
end;
CouchDB中附件的设置:
compressible_types: text/*, application/javascript, application/json, application/xml
compression_level: 0
代码的问题是,您正在将PDF文件的内容-二进制数据转换为Unicode字符串,并且正在更改其内容。这会改变您的哈希值。
您应该THashMD5
以不同的方式使用,并且直接提供二进制数据,而无需将其转换为字符串。
function TPliki.generujHashMD5(zawartoscPliku: TMemoryStream): string;
var
hash: THashMD5;
begin
hash := THashMD5.Create;
hash.Update(zawartoscPliku.Memory, zawartoscPliku.Size);
result := hash.HashAsString;
end;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句