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
PHP RSA加签的实现过程的更多相关文章
- RSA加密解密及RSA加签验签
RSA安全性应用场景说明 在刚接触RSA的时候,会混淆RSA加密解密和RSA加签验签的概念.简单来说加密解密是公钥加密私钥解密,持有公钥(多人持有)可以对数据加密,但是只有持有私钥(一人持有)才可以解 ...
- 微信支付 V3 RSA 加签踩坑
最近在做微信支付,根据微信官方文档上的要求 用RSA加签去请求支付窗口的调起,下面详细列举支付开发过程: 当前项目的流程大概是,前端根据后端要求提交数据------->拿到后台返回的prepay ...
- java RSA 加签验签【转】
引用自: http://blog.csdn.net/wangqiuyun/article/details/42143957/ java RSA 加签验签 package com.testdemo.co ...
- ruby中rsa加签解签方法
# coding:utf-8require 'openssl'require 'base64'# rsa签名,文本内容和私钥路径def rsa_sign(data,private_key_path) ...
- .net core 常用rsa 加签类
using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Math ...
- ruby的加密方法整理(des rsa加密 加签)
# coding:utf-8require 'openssl'require 'base64'#des加密并且base64编码def des_encrypt des_key, des_text des ...
- RSA体系 c++/java相互进行加签验签--转
在web开发中,采用RSA公钥密钥体系自制ukey,文件证书登陆时,普遍的做法为:在浏览器端采用c++ activex控件,使用 c++的第三库openssl进行RAS加签操作,在服务器端采用java ...
- Python rsa公私钥生成 rsa公钥加解密(分段加解密)-私钥加签验签实战
一般现在的SAAS服务提供现在的sdk或api对接服务都涉及到一个身份验证和数据加密的问题.一般现在普遍的做法就是配置使用非对称加密的方式来解决这个问题,你持有SAAS公司的公钥,SAAS公司持有你的 ...
- RSA加密解密与加签验签
RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.1987年7月首次在美国公布 ...
随机推荐
- Metasploit没有db_autopwn命令的解决办法
将附件db_autopwn.rp 拷贝到/opt/framework3/msf3/plugins/PS:db_autopwn.rp 下载地址:http://dl.vmall.com/c04w8czlc ...
- 【Python】高阶函数介绍
其实函数可以作为变量,之前学过C++,对于这种用法并不奇怪.无非就是函数充当变量,可以传入函数而已. 下面分别介绍 Python 中常见的高阶函数:map/reduce, filter, sorted ...
- Java复习4.数组初始化.
Java复习4.Java中的数组声明方式 20131004 1.数组声明和初始化, 数组元素和变量一样,可以在定义的时候i进行初始化.数组元素的初始化工作实在编译阶段完成的,可以减少运行时间. 在初 ...
- C#学习历程(五)[高阶概念]
>>修饰符的访问权限 private : 私有成员, 在类的内部才可以访问. protected: 保护成员,该类内部和继承类中可以访问. public: 公共成员,完全公开,没有访问限制 ...
- eureka -2 - 重要配置
Server 端配置 eureka.client.registerWithEureka :是否将自己注册到Eureka Server,默认是true,如果是单节点部署,切是server端,则设置成fa ...
- LeetCode OJ:Gas Station(加油站问题)
There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You ...
- 如何将Pcm格式的音频文件转换成Wave格式的文件
最近在做一款变声App,其中就用到了将pcm格式转wave格式,下面贴出源代码,希望带有需求的童鞋有帮助!!!这里是c++语言写的,也可以用java实现.当然java调用native函数要用到jni技 ...
- LINUX中的DNS服务---DNS集群
一.DNS集群的理解 在使用DNS的时候,为了缓解服务器的压力,会使用多个辅助DNS服务器来分担主DNS的工作.这些DNS就叫做DNS集群. 二.配置过程 1)在辅DNS中操作如下:(主机号为172. ...
- vs 2013远程调试
1. 找到本机Remote Debugger/x64文件夹,将其拷贝到远程机器上 2.运行x64文件夹下的msvsmon.exe,将其设置为“无身份验证模式”,记住端口号,一会儿要用到 3.在vs中打 ...
- Linux:grub密码设置与修改
grub密码设置与修改 默认GRUB启动参数可以的进入单用户模式从而修改root密码,如果想要给GRUB菜单设置密码,可以修改/etc/grub.conf文件 (/boot/grub/grub.con ...