先附上签名的代码
$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签名和验证是常见的加密操作,主要涉及以下几个核心知识点: 1. **OpenSSL库**:OpenSSL是一个强大的安全套接字层密码库,包含各种主要的密码算法、常用的密钥和...
但是没有提供Delphi使用的RSA支持,delphi开发者使用起来还是有些麻烦,特别是RSA加解密及签名验证等等,因此我们开发了这个RSA控件,秩序简单的几个API就可以立即实现RSA的加解密及签名验证等功能。
在提供的压缩包文件中,可以看到以下几个关键文件: 1. `uMain.dfm`:这是Delphi的表单文件,包含了用户界面的设计和控件的布局,可能包括输入消息、显示签名、验证签名等功能。 2. `pSSLDemo.dpr`:这是Delphi项目...
OpenSSL 是一个强大的安全套接层 (SSL) 和 Transport Layer Security (TLS) 实现的开源库,它提供了各种加密算法、常用的密钥和证书封装管理功能以及 SSL 协议,并提供了一个全面且易于使用的应用程序接口(API)。...
OpenSSL库提供了丰富的函数接口,涵盖了密钥生成、证书管理、加密解密、签名验签等多个方面。例如,`RSA`模块用于处理RSA公钥加密算法,`EVP`模块则提供了高级的加密和哈希操作。 总之,OpenSSL是互联网安全基础...
但是没有提供Delphi使用的RSA支持,delphi开发者使用起来还是有些麻烦,特别是RSA加解密及签名验证等等,因此我们开发了这个RSA控件,秩序简单的几个API就可以立即实现RSA的加解密及签名验证等功能。
首先,我们需要理解RSA的几个基本概念: 1. 公钥:用于加密和验证签名,可以公开给任何人。 2. 私钥:用于解密和签名,必须保密。 3. 加密:使用接收方的公钥对数据进行加密,只有拥有对应私钥的人才能解密。 4. ...
4. **库的选择**:Delphi虽然内建了一些加密支持,但为了更丰富的功能和更好的性能,可以考虑使用第三方库,如OpenSSL、Crypto++等,它们提供了完善的RSA实现和更多的加密算法。 通过以上介绍,我们可以看出Delphi...
在给定的文件列表中,我们看到几个可能的源代码文件(如11.18.c、未命名2.c)和开发环境文件(ECC.dev、项目1.dev)。这些文件可能包含了实现ECC签名算法的代码和相关配置。`Makefile.win`表明有一个针对Windows系统...
在OpenSSL编程中,我们需要了解以下几个核心概念和关键技术: 1. **加密算法**:OpenSSL支持多种加密算法,包括对称加密(如AES、DES、3DES)和非对称加密(如RSA、DSA、ECC)。对称加密速度快,适合大量数据的加密...
OpenSSL 是一个强大的安全套接层(SSL)和传输层安全(TLS)协议实现库,同时也包含了各种加密算法、常用的密钥和证书处理工具。在iOS和Mac OS平台上,OpenSSL被广泛应用于网络通信的安全保障,例如HTTPS协议的实现...
- **加密算法**:OpenSSL 支持大量的对称和非对称加密算法,如 AES、DES、RSA、DSA 等,提供了加密、解密、签名和验签等操作。 - **证书管理**:OpenSSL 可用于生成、管理和验证 X.509 数字证书,这些证书用于识别...
4. **签名与验签函数**:实现签名生成和验证的过程,涉及散列和非对称加密的结合。 5. **用户界面**:提供图形用户界面(GUI)或命令行界面(CLI),使得用户能够上传签名文件并进行鉴定操作。 项目中的源代码将...
以下是关于微信支付证书开发的几个关键知识点: 1. **申请与下载证书**:商家需要在微信支付商户平台中完成相关设置,按照指引申请并下载证书文件,通常文件格式为`.p12`或者`.pem`。 2. **证书导入**:下载的证书...
支付宝Android系统接入步骤流程的知识点主要包含以下几个方面: 一、了解支付宝安全支付服务 支付宝安全支付服务是运行在Android操作系统上的组件,旨在为其他应用程序提供方便、安全且可靠的支付功能。其工作原理...
##### 3.3 RSA签名和验签 **RSA签名**是指使用私钥对数据进行加密处理,生成一个数字签名。而**RSA验签**则是使用公钥对签名进行解密,验证签名的有效性。 1. **RSA签名**:商户在生成订单时,使用自己的私钥对订单...
首先,我们需要理解的是,支付宝接口的调用通常涉及到以下几个核心概念: 1. **AppID**: 这是支付宝分配给每个应用的独特标识,用于区分不同的业务或服务。在使用Demo前,开发者需要确保已获得正确的AppID,并将其...
这是一个8位处理器上的SM2实现,未使用openssl等第三方库,目前仅支持256位SM2。代码基于nano-ecc实现(8位处理器上的ecc实现 本代码主要在以下几方面对nano-ecc进行了改动: 大数模运算 - nano-ecc在实现大数模...