【问题标题】:How do I use Hashed Passwords with SETAPDF's Password Protected PDFs?如何在 SETAPDF 的受密码保护的 PDF 中使用散列密码?
【发布时间】:2020-09-23 16:46:18
【问题描述】:

我正在使用一个名为 SET-PDF Stamper 的 API

我们的密码使用散列,我正在尝试将散列密码与 setasign PDF api 一起使用。在文档中,我看到它们支持加密,但我在散列方面找不到任何东西。有没有办法在验证密码哈希的文档上实现他们的密码保护?

我们的哈希使用以下password_hash("password", CRYPT_BLOWFISH, $options); 通常在这种情况下您会使用密码验证,但我看不到使用 setasign api 实现它的方法。

【问题讨论】:

  • 在创建文件和打开文件时,是否不可能从用户那里获取输入,对其进行哈希处理,然后将该哈希用作密码?
  • 您的问题有点难以理解;所以你有一个加密的 PDF 文件,你需要在你的 PHP 编辑文件之前解密它?
  • 你试过reading the SET-PDF manual吗?如果您有原始密码,它会准确地向您展示如何打开加密的 PDF。如果您没有原始密码,则无法访问 PDF 进行编辑(盖章)。
  • @HoldOffHunger 你对哈希的重复性质不正确;盐呢。每个密码哈希都使用盐,以避免您在此处说明的重复。因此,由于盐的原因,相同的密码会产生许多哈希值。
  • @HoldOffHunger ;谢谢;我很了解盐和哈希。 PHP password_hash 的哈希是使用密码明文和盐生成的。这意味着相同的明文使用这种方法会创建许多不同的哈希值。这意味着您之前关于哈希重复的评论在这里不成立。

标签: php encryption hash password-hash setapdf


【解决方案1】:

主要问题与 SetaPDF 无关,但您正在搜索 PDF 格式的功能,该功能根本不可用。您需要一个安全处理程序,在输入用于计算加密密钥之前对其进行哈希处理。这根本不是标准 PDF 加密的一部分。

标准的 PDF 加密算法以纯文本密码开头。

除了为 PDF 查看器(例如 pdf.js)编写自己的逻辑来修改输入(散列)之前,您无能为力。

【讨论】:

  • 我一直在研究它,而不是在我们的数据库中散列密码,我们应该使用加密吗?这样至少我们可以解密以在受密码保护的手册上使用。这是我认为唯一可行的解​​决方案。
  • 我不确定您是否真的想知道您的用户的密码?您可以简单地重新询问密码,根据您保存的哈希+盐组合验证它,如果这很好,可以使用它来加密 PDF 文档。这样,用户密码只在短时间内为您所知,您无需保存。另一种方法是为 PDF 加密设置一个单独的密码,该密码完全由您自己控制,这样它就不会与用户的任何其他个人密码混合。
  • 是的,但是,似乎没有办法通过 SETASIGN 的 API 来验证它。我无法使用该 API 验证哈希。
  • 您为什么想用 SetaPDF 验证什么?你不是存储哈希+盐吗?如果这与传递的密码匹配,只需使用密码加密 PDF。
猜你喜欢
  • 2011-12-23
  • 2010-09-27
  • 1970-01-01
  • 1970-01-01
  • 2021-10-15
  • 1970-01-01
  • 2015-07-20
  • 2012-06-08
相关资源
最近更新 更多