首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何添加数字签名(RSA,证书等)到任何文件,使用PHP?

如何添加数字签名(RSA,证书等)到任何文件,使用PHP?
EN

Stack Overflow用户
提问于 2012-05-02 12:00:06
回答 2查看 32.9K关注 0票数 11

我需要知道是否可以使用RSA、证书之类的东西对任何类型的文件进行数字签名,或者是否只能对某些类型的文件进行签名。所有这些都是使用PHP实现的。

例如:一个纯文本文件可以用数字签名吗?图像(png,jpeg,bmp)怎么样?

我不需要“附加”带有图形签名的图像。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-04 01:57:08

使用phpseclib, a pure PHP RSA implementation (更新的here):

<?php
include('Crypt/RSA.php');

$rsa = new Crypt_RSA();
extract($rsa->createKey());

$plaintext = 'terrafrost';

$rsa->loadKey($privatekey);
$signature = $rsa->sign($plaintext);

$rsa->loadKey($publickey);
echo $rsa->verify($plaintext, $signature) ? 'verified' : 'unverified';
?>

与CLI openssl类似,如下所示:

openssl dgst -sha1 -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -out signature.txt -sign privatekey.txt plaintext.txt 
openssl dgst -sha1 -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -prverify privatekey.txt -signature signature.txt plaintext.txt 
票数 8
EN

Stack Overflow用户

发布于 2012-05-02 13:08:43

为什么要对这些不同的文件进行数字签名?

对于实际更改文本文件或图像以使文件本身包含某种类型的数字签名,并没有标准。

如果您想向用户保证文件没有被篡改,您可以向他们提供文件的MD5散列。他们可以使用免费的工具来检查他们下载的文件的MD5散列,并将其与您提供的文件进行比较,以确保他们的文件没有被更改。这通常用于第三方可能向其中插入恶意代码的软件/二进制包。

另一种可能性是,您希望用户能够验证某些文件的真实性。在这种情况下,用户可能希望确定某个文本文件或图像特定来自您。这几乎就像是使用只有您知道的私钥获取文件的MD5散列,以便最终用户可以将文件签名与您的公钥进行比较,以确保文件未被篡改且来自特定来源。PGP (相当好的隐私)为此提供了一个框架。

我建议您查看PGP简介文档,了解有关这方面的更多信息。http://www.pgpi.org/doc/pgpintro/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10407523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档