本人php菜鸟,主要使用php实现简单的签名验签功能

以下php代码使用的密钥格式为pem格式,其他证书格式可以使用openssl进行转换(未安装请实现安装):

以下是.p12文件导出pem格式公私钥命令:

//1.生成1.key文件
openssl pkcs12 -in XXX.p12 -nocerts -nodes -out 1.key
//2.导出私钥
openssl rsa -in 1.key -out XXX.pem
writing RSA key
//3.导出公钥
openssl rsa -in 1.key -pubout -out XXX.pem

以下是.der文件导出公钥命令:

openssl x509 -inform der -in XXX.der -outform pem -out cert.pem

从 certificate 输出
openssl x509 -in cert.pem -pubkey -noout > XXX.pem

签名:

/**
* 请求内容进行签名
* @param [String] $content 请求内容-签名
*
*/
public function sign($content){
//privateKey 密钥文件绝对路径(相对路径不知道可不可以,没试过)
if(!file_exists($this->privateKey)){
throw new Exception("私钥证书不存在", 1); }
//获取私钥证书内容
$privatePem=file_get_contents($this->privateKey); //获取私钥
$privateKey = openssl_get_privatekey($privatePem); //使用的加密算法官网可以查 openssl_sign($content,$resign,$privateKey,“sha256WithRSAEncryption”); openssl_free_key($privateKey); //返回的是aciss字符表示的字符串,根据情况再次进行编码,有的案例做的是base64编码,当然在验签的时候也要解码,我做的是转成十六进制的表示的字符串,我就不贴出来了
。。。。。。
       。。。。。
return $sign; }

验签:


/**

* @param [String] $data 验签原文内容
* @param [String] $sign [响应签名]
* @return [int] 验签是否通过 0:不通过 1:通过
*/
function verify($data,$sign){
if(!file_exists($this->publicKey)){
throw new Exception("公钥证书不存在", 1);
}
//获取公钥内容
$pem=file_get_contents($this->publicKey);

$publicKey=openssl_pkey_get_public($pem);


//如果对签名内容进行过编码,在事先解码会原来的内容


$flag=openssl_verify($data,$sign,“sha256WithRSAEncryption”);


openssl_free_key($publicKey);


return $flag;
}

 

php 实现签名验签的更多相关文章

  1. RSA签名验签

    import android.util.Base64; import java.security.KeyFactory; import java.security.PrivateKey; import ...

  2. 利用SHA-1算法和RSA秘钥进行签名验签(带注释)

    背景介绍 1.SHA 安全散列算法SHA (Secure Hash Algorithm)是美国国家标准和技术局发布的国家标准FIPS PUB 180-1,一般称为SHA-1.其对长度不超过264二进制 ...

  3. RSA密钥生成、加密解密、签名验签

    RSA 非对称加密公钥加密,私钥解密 私钥签名,公钥验签 下面是生成随机密钥对: //随机生成密钥对 KeyPairGenerator keyPairGen = null; try { keyPair ...

  4. C# RSACryptoServiceProvider加密解密签名验签和DESCryptoServic

    C#在using System.Security.Cryptography下有 DESCryptoServiceProvider RSACryptoServiceProvider DESCryptoS ...

  5. RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密

    原文:RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密 C#在using System.Security.Cryptograph ...

  6. 数据安全管理:RSA加密算法,签名验签流程详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.RSA算法简介 1.加密解密 RSA加密是一种非对称加密,在公开密钥加密和电子商业中RSA被广泛使用.可以在不直接传递密钥的情况下,完成加 ...

  7. js rsa sign使用笔记(加密,解密,签名,验签)

    你将会收获: js如何加密, 解密 js如何签名, 验签 js和Java交互如何相互解密, 验签(重点) 通过谷歌, 发现jsrsasign库使用者较多. 查看api发现这个库功能很健全. 本文使用方 ...

  8. [Python3] RSA的加解密和签名/验签实现 -- 使用pycrytodome

    Crypto 包介绍: pycrypto,pycrytodome 和 crypto 是一个东西,crypto 在 python 上面的名字是 pycrypto 它是一个第三方库,但是已经停止更新,所以 ...

  9. .net 实现签名验签

    本人被要求实现.net的签名验签,还是个.net菜鸡,来分享下采坑过程 依然,签名验签使用的证书格式依然是pem,有关使用openssl将.p12和der转pem的命令请转到php实现签名验签 .ne ...

随机推荐

  1. Mice and Rice(queue的用法)

    Mice and Rice(queue的用法) Mice and Rice is the name of a programming contest in which each programmer ...

  2. sqli-labs第二关 详解

    学会了第一关,时隔多天来到了第二关,怎么说了没有看wp就给做出来了. 首先,我是自己先判断了下,这个是什么注入 ?id=1' 不行 ?id=1' or '1'='1--+ 也不行 然后又尝试了下 ?i ...

  3. 下载 Oracle Database XE 11gR2

    操作系统:Windows 10 x64 第一节:下载 Oracle Database XE 11gR2 第二节:安装.验证安装 Oracle Database XE 11gR2 第三节:Oracle ...

  4. OpenCV图像加载与保存

    OpenCV中的图像加载与保存 头文件是包含的库,在GitHub上下载的 imread("图片路径",图片加载方式) 图片加载方式: IMREAD_GRAYSCALE 灰度图像 I ...

  5. Java之微信支付(扫码支付模式二)案例实战

    摘要:最近的一个项目中涉及到了支付业务,其中用到了微信支付和支付宝支付,在做的过程中也遇到些问题,所以现在总结梳理一下,分享给有需要的人,也为自己以后回顾留个思路. 一:微信支付接入准备工作: 首先, ...

  6. JavaCV FFmpeg H264编码

    上次成功通过FFmpeg采集摄像头的YUV数据,这次针对上一次的程序进行了改造,使用H264编码采集后的数据. (传送门) JavaCV FFmpeg采集摄像头YUV数据 采集摄像头数据是一个解码过程 ...

  7. ORA-00018: maximum number of sessions exceeded 超出最大会话数

    ORA-00018: maximum number of sessions exceededORA-00018: 超出最大会话数 Cause:       All session state obje ...

  8. 草率了,又一个Maven打包的问题

    经常遇到 Maven 相关的问题,这是之前的文章: 这个 Maven 依赖的问题,你敢说你没遇到过:https://mp.weixin.qq.com/s/SzBbDtyRUrk_7LH8SUbGXQ ...

  9. Scala小记(一)

    Scala小记----初识Scala 一,什么是Scale? Scala是一门面向对象的,使用JVM运行的函数式编程语言,(函数式编程语言:指的就是那些将方法或者说是函数来作为参数 进行传递的编程语言 ...

  10. Apple uses Multipath TCP

    http://blog.multipath-tcp.org/blog/html/2018/12/15/apple_and_multipath_tcp.html December 15, 2018 Ap ...