【发布时间】:2016-02-29 10:44:04
【问题描述】:
我正在使用 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;
- 在函数之前,我使用 TMemoryStream.LoadFromFile(path) 将文件加载到 TMemoryStream
- 调用这个函数TPliki.GenerujHashMD5(fileContent): string;
- 在此函数中,我生成哈希并返回带有结果的字符串。 当我从 Base64 CouchDB Hash 解码时,我的哈希值不同。
CouchDB 中的附件设置:
compressible_types: text/*, application/javascript, application/json, application/xml
compression_level: 0
【问题讨论】:
-
首先你要检查couch db使用了什么样的哈希算法
-
您确定
zawartoscPliku.Memory永远不会包含NULL 字符吗?这可能会导致在转换为 PAnsiChar 时提前终止。 -
我正在生成 PDF 文件,然后我对其内容进行哈希处理。我认为它必须至少有一个字符。
标签: delphi pdf hash couchdb md5