php生成签名及验证签名
<?php
/**
* 根据原文生成签名内容
*
* @param string $data 原文内容
*
* @return string
* @author confu
*/
function sign($data)
{
$filePath = 'test.p12';
if(!file_exists($filePath)) {
return false;
} $pkcs12 = file_get_contents($filePath);
if (openssl_pkcs12_read($pkcs12, $certs, '读取证书所需要的密码')) {
$privateKey = $certs['pkey']; //根据实际情况键值可能不同
$publicKey = $certs['cert']; //根据实际情况键值可能不同
$binary_signature = "";
if (openssl_sign($data, $binarySignature, $privateKey, OPENSSL_ALGO_SHA1)) {
return $binarySignature;
} else {
return '';
}
} else {
return '';
}
} /**
* 验证签名自己生成的是否正确
*
* @param string $data 签名的原文
* @param string $signature 签名
*
* @return bool
* @author confu
*/
function verifySign($data, $signature)
{
$filePath = 'test.p12';
if(!file_exists($filePath)) {
return false;
} $pkcs12 = file_get_contents($filePath);
if (openssl_pkcs12_read($pkcs12, $certs, '读取证书所需要的密码')) {
$publicKey = $certs['cert'];
$ok = openssl_verify($data, $signature, $publicKey);
if ($ok == 1) {
return true;
}
}
return false;
} /**
* 验证返回的签名是否正确
*
* @param string $data 要验证的签名原文
* @param string $signature 签名内容
*
* @return bool
* @author confu
*/
function verifyRespondSign($data, $signature)
{
$filePath = 'allinpay-pds.pem';
if(!file_exists($filePath)) {
return false;
} $fp = fopen($filePath, "r");
$cert = fread($fp, 8192);
fclose($fp);
$pubkeyid = openssl_get_publickey($cert); if(!is_resource($pubkeyid)) {
return false;
} $ok = openssl_verify($data, $signature, $pubkeyid);
if ($ok == 1) {
openssl_free_key($pubkeyid);
return true;
}
return false;
}
?>
openssl_sign 默认signature_alg参数是OPENSSL_ALGO_SHA1
如果使用DSA加密方式需要使用OPENSSL_ALGO_DSS1参数
signature_alg 其他参数
OPENSSL_ALGO_DSS1 (integer)
OPENSSL_ALGO_SHA1 (integer)
OPENSSL_ALGO_SHA224 (integer)
OPENSSL_ALGO_SHA256 (integer)
OPENSSL_ALGO_SHA384 (integer)
OPENSSL_ALGO_SHA512 (integer)
OPENSSL_ALGO_RMD160 (integer)
OPENSSL_ALGO_MD5 (integer)
OPENSSL_ALGO_MD4 (integer)
OPENSSL_ALGO_MD2 (integer)
php生成签名及验证签名的更多相关文章
- openssl生成签名与验证签名
继上一篇RSA对传输信息进行加密解密,再写个生成签名和验证签名. 一般,安全考虑,比如接入支付平台时,请求方和接收方要互相验证是否是你,就用签名来看. 签名方式一般两种,对称加密和非对称加密.对称加密 ...
- iOS使用Security.framework进行RSA 加密解密签名和验证签名
iOS 上 Security.framework为我们提供了安全方面相关的api: Security框架提供的RSA在iOS上使用的一些小结 支持的RSA keySize 大小有:512,768,10 ...
- C#.NET RSA 私钥签名 公钥验证签名
C#.NET RSA 私钥签名 公钥验证签名 公钥验签 1.待签名字符串转为byte数组时,一般使用UTF8. 2.将私钥字符串(PKCS8或PKCS1格式)转为C#.NET的RSACryptoSer ...
- C#中RSA加密解密和签名与验证的实现
RSA加密算法是一种非对称加密算法.在公钥加密标准和电子商业中RSA被广泛使用.RSA是1977年由罗纳德•李维斯特(Ron Rivest).阿迪•萨莫尔(Adi Shamir)和伦纳德•阿德曼(Le ...
- (8) openssl rsautl(签名/验证签名/加解密文件)和openssl pkeyutl(文件的非对称加密)
rsautl是rsa的工具,相当于rsa.dgst的部分功能集合,可用于生成数字签名.验证数字签名.加密和解密文件. pkeyutl是非对称加密的通用工具,大体上和rsautl的用法差不多,所以此处只 ...
- 【转】C#中RSA加密解密和签名与验证的实现
[转]C#中RSA加密解密和签名与验证的实现 RSA加密算法是一种非对称加密算法.在公钥加密标准和电子商业中RSA被广泛使用.RSA是1977年由罗纳德•李维斯特(Ron Rivest).阿迪•萨莫尔 ...
- iOS RSA加解密签名和验证
转自:http://www.jianshu.com/p/81b0b54436b8 Pre:在公司负责了一个项目,需要用到iOS RSA验证签名的功能.后台给我的仅仅是一个公钥的字符串.经过起初的一段时 ...
- .net通用签名方法 webapi签名方法
验证签名方法 [HttpGet] public HttpResponseMessage LockRegister(string 参数1, int 参数2, string 参数3, string 参数4 ...
- 第十六个知识点:描述DSA,Schnorr,RSA-FDH的密钥生成,签名和验证
第十六个知识点:描述DSA,Schnorr,RSA-FDH的密钥生成,签名和验证 这是密码学52件事系列中第16篇,这周我们描述关于DSA,Schnorr和RSA-FDH的密钥生成,签名和验证. 1. ...
随机推荐
- Shell 文字 顶替tomcat星团war包裹
执行前server造成免费ssh登陆. 修改配置文件不是太大 您可以覆盖原有的配置 profile 简介 bak=/home/wsm/bak webapps=/home/wsm/webapps/WSM ...
- 定制Attribute
目录 Attribute是什么 自定义Attribute 一.Attribute是什么 将一些附加信息与制定目标相关联的方式.编译器在元数据中生成这些额外的信息.也叫做特性. 比如之前文章中提到的:枚 ...
- Benchmark与Profiler---性能调优得力助手
转载请注明出处:http://blog.csdn.net/gaoyanjie55/article/details/34981077 性能优化.它是一种诊断性能瓶颈,能问题点进行优化的过程.前两天听完s ...
- 华夏互联与逐浪CMS旗下三款软件获著作权登记
北京时间2014年7月24日消息: 上海逐一软件科技公司长下三款软件通过中国知识产权局登记,当中包含全新的CMS2 x2.0主产品.移动门户管理系统.云台管理系统. 除主产品CMS2 x2.0( ...
- struts2跳转类型解析
struts 2 跳转类型 1.dispatcher dispatcher 为默认跳转类型.用于返回一个视图资源 xml代码 : <result name="success" ...
- 新的学生说说我是如何靠APP发展赢得了亿万
郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠.支持郝萌主,捐赠数额任意.重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 14年踏入 ...
- 最受欢迎telnet
点击开关在模拟器,它相当于实PC经由控制线连接真实开关 由于我使用telnet远程登录到交换机的话.因为telnet工作在TCP/IP模型的应用层,现在让应用层通信的话,我首先要保证网络层通信,通信, ...
- zoom的学习
上大学做阶段项目时遇到了一个非常奇特的现象:kindEditor上传图片功能失效,可是把jsp所引用的样式去掉就好用,这说明样式有问题,于是删一个样式測试一下,就这样罪魁祸首落在了zoom身上,这是我 ...
- hdu 1316 How Many Fibs? (模拟高精度)
题目大意: 问[s,e]之间有多少个 斐波那契数. 思路分析: 直接模拟高精度字符串的加法和大小的比較. 注意wa点再 s 能够从 0 開始 那么要在推断输入结束的时候注意一下. #include & ...
- 配置路线图RouteMap注意事项
路线图RouteMap一个特征是First Match Win.假设没有人RouteMap实例都满足,那么.默认拒绝操作,然后配置路线图时,有一点需要特别注意.否则容易出错,这是默认的处理.通常的做法 ...