php验签,用PHP验证签名的PDF文档

我有一份签名的PDF文件.它是使用TCPDF签署的.现在我想验证它.这是我的解决方案:

>获取已签名pdf的内容.

>根据/ ByRange字段获取原始内容和签名值.

>从签名值获取加密摘要消息.它是签名值末尾的八位字符串.

>使用Openssl_public_decrypt()函数使用公钥解密加密的摘要消息.然后我们有一个带有前缀的字符串(“3021300906052b0e03021a05000414”).此前缀表示使用的哈希函数是SHA-1.删除前缀后,我们获取摘要消息D1.

>使用SHA1()函数来散列原始内容,我们获取摘要消息D2.

>将D1与D2进行比较.如果D1 = D2则签名有效,反之亦然.

我的问题是在最后一步,当我将D1与D2进行比较时,它们并不相等.我不知道为什么.

谢谢你的帮助.

解决方法:

You should try based on following example

// $data and $signature are assumed to contain the data and the signature

// fetch public key from certificate and ready it

$pubkeyid = openssl_pkey_get_public("file://src/openssl-0.9.6/demos/sign/cert.pem");

// state whether signature is okay or not

$ok = openssl_verify($data, $signature, $pubkeyid);

if ($ok == 1) {

echo "good";

} elseif ($ok == 0) {

echo "bad";

} else {

echo "ugly, error checking signature";

}

// free the key from memory

openssl_free_key($pubkeyid);

?>

more Examples ad explanation

http://www.php.net/manual/en/function.openssl-verify.php

标签:php,signature,tcpdf,verify,sign

来源: https://codeday.me/bug/20190708/1405324.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值