在Delphi中获取PDF MD5哈希

内心世界

我正在使用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;
  1. 在函数之前,我使用TMemoryStream.LoadFromFile(path)将文件加载到TMemoryStream
  2. 调用此函数TPliki.GenerujHashMD5(fileContent):string;
  3. 在此函数中,我生成哈希并返回带有结果的字符串。从Base64 CouchDB Hash解码时,我的哈希值有所不同。

CouchDB中附件的设置:

compressible_types: text/*, application/javascript, application/json, application/xml
compression_level: 0
达莉娅·普拉斯尼卡(Dalija Prasnikar)

代码的问题是,您正在将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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 MD5 Powershell 中获取哈希

来自分类Dev

无法获取md5哈希

来自分类Dev

在Elixir中哈希MD5

来自分类Dev

在Java中尝试MD5哈希

来自分类Dev

AIX OS中的MD5哈希

来自分类Dev

R库中MD5哈希的区别-序列化对象的MD5

来自分类Dev

如何在R中创建列的md5哈希?

来自分类Dev

从GitHub版本中哪里获得MD5哈希值?

来自分类Dev

如何在Qt中创建MD5哈希?

来自分类Dev

MD5哈希函数在Python中更改数据

来自分类Dev

如何小写文件中的所有MD5哈希?

来自分类Dev

如何在Qt中创建MD5哈希?

来自分类Dev

jQuery安全中的哈希md5密码

来自分类Dev

Arm 组装和字节序中的 MD5 哈希

来自分类Dev

如何直接在终端中获取字符串的MD5哈希?

来自分类Dev

如何直接在终端中获取字符串的MD5哈希?

来自分类Dev

在C#中获取给定文件的MD5哈希码(作为字符串)

来自分类Dev

Ruby On Rails:获取回形针图像的md5哈希值

来自分类Dev

MD5哈希在IOS和Windows中相同,但在Java中不同

来自分类Dev

如何在PostMan中的预请求脚本中计算md5哈希?

来自分类Dev

通过应用程序中的HTTPS发送md5哈希或原始密码

来自分类Dev

SOAP服务中的哈希Hash MD5不正确

来自分类Dev

从MD5哈希功能的特殊应用中恢复电子邮件地址

来自分类Dev

比较python中两个文件的md5哈希值

来自分类Dev

如何在Openrefine中基于值的MD5哈希创建UUID

来自分类Dev

R中的MD5文件哈希函数返回不同的值?

来自分类Dev

如何在长生不老药中的地图上创建“哈希”或“ md5”?

来自分类Dev

从MD5哈希功能的特殊应用中恢复电子邮件地址

来自分类Dev

如何在外壳中通过管道传递md5哈希结果