一、得到私钥文件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加签的实现过程的更多相关文章

  1. RSA加密解密及RSA加签验签

    RSA安全性应用场景说明 在刚接触RSA的时候,会混淆RSA加密解密和RSA加签验签的概念.简单来说加密解密是公钥加密私钥解密,持有公钥(多人持有)可以对数据加密,但是只有持有私钥(一人持有)才可以解 ...

  2. 微信支付 V3 RSA 加签踩坑

    最近在做微信支付,根据微信官方文档上的要求 用RSA加签去请求支付窗口的调起,下面详细列举支付开发过程: 当前项目的流程大概是,前端根据后端要求提交数据------->拿到后台返回的prepay ...

  3. java RSA 加签验签【转】

    引用自: http://blog.csdn.net/wangqiuyun/article/details/42143957/ java RSA 加签验签 package com.testdemo.co ...

  4. ruby中rsa加签解签方法

    # coding:utf-8require 'openssl'require 'base64'# rsa签名,文本内容和私钥路径def rsa_sign(data,private_key_path) ...

  5. .net core 常用rsa 加签类

    using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Math ...

  6. ruby的加密方法整理(des rsa加密 加签)

    # coding:utf-8require 'openssl'require 'base64'#des加密并且base64编码def des_encrypt des_key, des_text des ...

  7. RSA体系 c++/java相互进行加签验签--转

    在web开发中,采用RSA公钥密钥体系自制ukey,文件证书登陆时,普遍的做法为:在浏览器端采用c++ activex控件,使用 c++的第三库openssl进行RAS加签操作,在服务器端采用java ...

  8. Python rsa公私钥生成 rsa公钥加解密(分段加解密)-私钥加签验签实战

    一般现在的SAAS服务提供现在的sdk或api对接服务都涉及到一个身份验证和数据加密的问题.一般现在普遍的做法就是配置使用非对称加密的方式来解决这个问题,你持有SAAS公司的公钥,SAAS公司持有你的 ...

  9. RSA加密解密与加签验签

    RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.1987年7月首次在美国公布 ...

随机推荐

  1. [nodejs]解决mysql和连接池(pool)自动断开问题

    最近在做一个个人项目,数据库尝试使用了mongodb.sqlite和mysql.分享一下关于mysql的连接池用法.项目部署于appfog,项目中我使用连接池链接数据库,本地测试一切正常.上线以后,经 ...

  2. day22 CMDB 基础部分 (一)

    参考博客: http://www.cnblogs.com/alex3714/articles/5420433.html

  3. GPON命令模式

    1.添加ont步骤 1.1 查看自动发现的ONT,并记录SN号和PON口 MA5680T(config)#display ont autofind all  --------------------- ...

  4. Linux中jar包指定端口启动并记录日志

    Linux中jar包指定端口启动并记录日志: java -jar -Dserver.port=38080  group-buying-0.0.1-SNAPSHOT.jar   >log.log ...

  5. Java复习4.数组初始化.

    Java复习4.Java中的数组声明方式  20131004 1.数组声明和初始化, 数组元素和变量一样,可以在定义的时候i进行初始化.数组元素的初始化工作实在编译阶段完成的,可以减少运行时间. 在初 ...

  6. SpringAnnotation之配置AnnotationXML文件

    配置Annotation的环境:只需修改applicationContext.xml文件即可 1 2 3 4 5 6 7 8 9 10 11 <?xml version="1.0&qu ...

  7. C++以多态方式处理数组可能会遇到的问题

    今天读<More Effective C++>时遇到一个条款:绝对不要以多态方式处理数组.以前自己也没有注意过,觉得有必要记录下来. C++是允许通过base class的指针或引用来操作 ...

  8. 生产者与消费者的Java实现

    首先创建maven工程,需要引入的包: <dependencies> <dependency> <groupId>org.apache.kafka</grou ...

  9. MySQL学习(一): MySQL的初步操作与命令

    启动与关闭: 用管理员身份运行cmd 启动:net start mysql57 其中mysql57是我的MySQL名称,版本不同名称可能不一样 关闭:net stop mysql57 与上面同理 登录 ...

  10. Linux文件在系统中传输

    一.文件的传输 1.命令:scp scp file user@ip:/dir ##把当前系统目录下的文件file复制到另一个系统目录下 scp user@ip:/file dir 2.命令:rsync ...