PHP RSA2 签名算法
来源:互联网 发布:淘宝网店出售平台 编辑:程序博客网 时间:2024/05/20 14:26
什么是RSA2?
RSA2是在原来SHA1WithRSA签名算法的基础上,新增了支持SHA256WithRSA的签名算法。
该算法在摘要算法上比SHA1WithRSA有更强的安全能力。
SHA1WithRSA的签名算法会继续提供支持,但为了您的应用安全,强烈建议使用SHA256WithRSA的签名算法。
那些公司在使用?
一些大型公司的开发平台,比如支付宝、新浪微博。
创建私钥、公钥
//生成原始 RSA私钥文件
openssl genrsa -out rsa_private_key.pem 1024
//将原始 RSA私钥转换为 pkcs8格式
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pem
//生成RSA公钥
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
//我们将私钥rsa_private_key.pem用在服务器端,公钥发放给android跟ios等前端。
PHP-RSA2签名验证
class Rsa2{ private static $PRIVATE_KEY = 'rsa_private_key.pem 内容'; private static $PUBLIC_KEY = 'rsa_public_key.pem 内容'; /** * 获取私钥 * @return bool|resource */ private static function getPrivateKey() { $privKey = self::$PRIVATE_KEY; return openssl_pkey_get_private($privKey); } /** * 获取公钥 * @return bool|resource */ private static function getPublicKey() { $publicKey = self::$PUBLIC_KEY; return openssl_pkey_get_public($publicKey); } /** * 创建签名 * @param string $data 数据 * @return null|string */ public function createSign($data = '') { if (!is_string($data)) { return null; } return openssl_sign( $data, $sign, self::getPrivateKey(), OPENSSL_ALGO_SHA256 ) ? base64_encode($sign) : null; } /** * 验证签名 * @param string $data 数据 * @param string $sign 签名 * @return bool */ public function verifySign($data = '', $sign = '') { if (!is_string($sign) || !is_string($sign)) { return false; } return (bool)openssl_verify( $data, base64_decode($sign), self::getPublicKey(), OPENSSL_ALGO_SHA256 ); }}
PHP 调用
require_once "Rsa2.php";$rsa2 = new Rsa2();$data = 'my data'; //待签名字符串$strSign = $rsa2->createSign($data); //生成签名var_dump($strSign);$is_ok = $rsa2->verifySign($data, $sign); //验证签名var_dump($is_ok);
阅读全文
0 0
- PHP RSA2 签名算法
- PHP RSA2 签名算法
- PHP-RSA2签名
- RSA2
- php实现MD5withRSA签名算法
- SHA256WithRSA签名算法(PHP实现)
- BOS签名算法的PHP demo
- PHP微信接口签名算法
- PHP 签名
- 签名算法
- 签名算法
- 签名算法PHP和Java的不同实现
- RSA2实例详解
- php 生成签名
- PHP HTTP请求签名
- PHP的RSA签名
- PHP RSA参数签名
- php生成签名及验证签名
- VUE2.0学习笔记
- dubbo用户指南
- 封装-给继承自UIView的控件添加点击事件
- MOOC清华《程序设计基础》第3章:谁做的好事(循环枚举)
- ElasticSearch5.4.3 环境搭建 2017 (1.1-单节点模式/开发模式-添加到服务)
- PHP RSA2 签名算法
- opencv error : /usr/bin/ld: cannot find -lippicv
- Unity3D教程(一)安装以及使用Unity3D
- nginx反向代理TCP,取RTMP流
- 移动端appium框架,编写用例,集成到jenkins上配置
- Android 屏幕适配:最全面的解决方案
- js对时间段的选择 C#对时间段的选择
- 关于采用消息钩子机制的透明加密的简单破解
- 大端模式和小端模式