PHP RSA加签的实现过程
一、得到私钥文件mycert.key
2.从pfx提取密钥信息,并转换为key格式(pfx使用pkcs12模式补足)
(1)提取密钥对
openssl pkcs12 -in 1.pfx -nocerts -nodes -out 1.key
//如果pfx证书已加密,会提示输入密码。如果cer证书没有安装,则密码没法验证
(2)从密钥对提取私钥
openssl rsa -in 1.key -out 1_pri.key
(3)从密钥对提取公钥
openssl rsa -in 1.key -pubout -out 1_pub.key
(4)因为RSA算法使用的是pkcs8模式补足,需要对提取的私钥进一步处理
openssl pkcs8 -topk8 -inform PEM -in 1_pri.key -outform PEM -nocrypt
复制窗口中生成的密钥,保存为1_pri_pkcs8.key
(5)得到密钥对1_pri_pkcs8.key和1_pub.key
二、PHP加签
$timestr=$this->byte2Str($this->toBE($timestamp));
$hash=strtoupper(sha1($data.$timestr));
$certfile = "d:/tmp/mycert.key";
$res = openssl_pkey_get_private(file_get_contents($certfile), '');
openssl_sign($hash, $encrypted, $res);
openssl_free_key($res);
$encrypted=strtoupper(bin2hex($encrypted));
return $encrypted;
http://blog.csdn.net/problem2050/article/details/50528704
最新文章
- Python 类(一)
- Java IO之字节流
- ICompare接口、Sort()方法
- Go语言并发编程示例 分享(含有源代码)
- php面试题目
- easyui datagrid使用
- 删除docker私有库镜像
- Leetcode#139	Word Break
- Android 使用剪切板传递数据
- Xamarin.Android 入门之:Bind java的jar文件+Android显示gif图片
- C语言itoa函数和atoi 函数
- 存储、读取——Android应用程序内置的文件夹
- C# 操作 Excel 常见问题收集和整理
- .NET基础——方法
- 2015 ACM/ICPC Asia Regional Shenyang Online
- This compilation unit is not on the build path SVN
- System.Data.SqlClient.SqlException (0x80131904): EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配。上一计数 = 1,当前计数 = 0。 EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配。上一计数 = 1,当前计数 = 0。
- 【解决方案】纯js动态克隆表一行元素
- 开发环境---->;服务器(数据库迁移Migration)
- 使用docker 部署rabbitmq 镜像