先附上签名的代码
$privateKeyFile = '/data/private.pem'; $password = '123456'; $privateKey = file_get_contents($privateKeyFile); $pKeyId = openssl_pkey_get_private($privateKey, $password); openssl_sign($xmlSignSrc, $signature, $pKeyId); openssl_free_key($pKeyId); $signature = bin2hex($signature);
先附上验签的代码
public function verifyStr($orgStr,$signature){ echo '签名原文:'.$orgStr; $pubKeyId = openssl_get_publickey(file_get_contents($certFile)); $flag = (bool) openssl_verify($orgStr, hex2bin($signature), $pubKeyId); openssl_free_key($pubKeyId); if ($flag) { echo '<br/>Verified: <font color=red>SUCC</font>.'; return TRUE; } else { echo '<br/>Verified: <font color=red>Failed</font>.'; return FALSE; } }
生成私钥
openssl genrsa -out rsa_private_key.pem 1024
生成公钥
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
首先要保证证书是 pem 格式的,用记事本打开如以下格式:
如果打开的是乱码,说明不是pem格式的证书,要把它转换成 pem 格式,举个例子:如果是 cer 格式,转换命令如下:
openssl x509 -inform DER -in allinpay-pds.cer -out allinpay-pds.pem
如果是 p12 格式证书转换,则有多种可能,得出的是两个稍有不同的代码
openssl pkcs12 -clcerts -nokeys -out cer.pem -in 20058100001485304.p12
openssl pkcs12 -clcerts -nodes -out cer.pem -in 20058100001485304.p12
如果PHP版本低于 php 5.4.1 ,请用 hextobin 替代 hex2bin 函数
具体证书转换流程,可借助搜索引擎研究下。另外,验签出错可能还和你的域名有关。
补充点SSL证书的知识:https://help.aliyun.com/knowledge_detail/42216.html
相关推荐
linux c 使用openssl实现SHA1WithRSA实现,签名,验签
OpenSSL 1.1.1 新特性: 全面支持国密SM2/SM3/SM4加密算法,最近的项目涉及到国密,又局限于资源有限,只能只能上了。
openssl签名和验证;openssl签名和验证;openssl签名和验证;
使用Openssl实现RSA的加密和解密过程;使用Openssl实现签名和验签过程;SHA256WithRSA签名验签过程;封装很好,一看就懂,直接使用!
之前上传的有ECC密钥生成、加密解密、签名验签工具,忘了放源码了,这个是源代码,VS2010的,由于上传大小有限制,所以分开了,这个是签名验签的,这里用到了OPENSSL库,OpenSSL源码网上可以找到
基于openssl的RSA的加密,解密,签名和验证签名, RSR加密 RSA解密 openssl签名 openssl验签, 基于openssl的RSA的加密,解密,签名和验证签名
本文件包括了demo和安装对应的环境、安装教程、简单易懂,正常php的rsa签名是使用openssl_sign,但是对应java中CFCASignature.signature的签名的签名时候对不上,要使用扩展php_com_dotnet并且对应安装签名的环境 ...
首先查看一下 OpenSSL 内建了哪些椭圆曲线,使用命令为: openssl ecparam -list_curves 选择一条椭圆曲线创建 ECC 公私钥对,这里使用 secp256k1,执行命令: openssl ecparam -name secp256k1 -genkey -out ec....
用VS2010基于C语言写的ECC密钥生成器,ECC加密解密小工具,ECC签名验签小工具,密钥生成、签名验签是基于OpenSSl写的,加密解密是自己写的,另外用到的还有大数库等
sm2加密,解密,签名,验签,sm3哈希,基于openssl的C语言实现
基于linux c openssl 库实现公钥签名私钥验签 公钥加密和私钥解密
Qt利用OpenSSl实现RSA数字签名 http://blog.csdn.net/usister/article/details/74390949资源描述 欢迎评论
Delphi使用CryptoAPI生成自签名证书,PHP端使用该证书进行签名,Delphi作为客户端使用公钥进行验签。
利用OpenSSL PKCS7进行数字签名的示例代码,仅供参考
利用OPENSSL,实现用国标SM2进行签名和验签名操作
基于OpenSSL库的ECDSA签名与验证,实现了密钥对生成导出,数据的签名以及签名的验证。仅供参考。附代码和文档
国密算法SM2,SM3,SM4,有源码,VC工程,基于OPENSSL.
1、生成密钥对 2 2、导出私钥 2 3、导出公钥 3 4、生成密钥源代码 3 1、导入私钥 8 2、数据签名 8 3、数据签名源代码 8 1、导入公钥 14
这是用openssl ca命令对证书请求文件进行签名时需要的一些文件。