当前位置: 首页 > news >正文

OpenSSL生成私钥和公钥

1.生成私钥

-- 生成 RSA 私钥(传统格式的)

openssl genrsa -out rsa_private_key.pem 1024

-- 将传统格式的私钥转换成 PKCS#8 格式的(JAVA需要使用的私钥需要经过PKCS#8编码,PHP程序不需要,可以直接略过)

openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt

2.生成公钥

-- 生成 RSA 公钥(php和java都用转换前私钥生成公钥)

openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

3.OpenSSL私钥生成签名

//获取私钥资源
$re = openssl_get_privatekey($privateKeyFilePath);
//生成签名
openssl_sign($data, $sign, $re);
//base64_encode防止乱码
$sign = base64_encode($sign);

4.OpenSSL公钥验签

$re = openssl_get_publickey($publicKeyFilePath);
$result = openssl_verify($data, $sign, $re);

5.说明

*OpenSSL是带头和带尾的,有时候我获取到的可能是不带头不带尾的一行字符串,这时候如果想生成一个pem格式的文件自己需要给字符串前后添加头尾,以下给一个标准的pem公钥和私钥格式,如下:

//公钥
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDI6d306Q8fIfCOaTXyiUeJHkrIvYISRcc73s3vF1ZT7XN8RNPwJxo8pWaJMmvyTn9N4HQ632qJBVHf8sxHi/fEsraprwCtzvzQETrNRwVxLO5jVmRGi60j8Ue1efIlzPXV9je9mkjzOmdssymZkh2QhUrCmZYI/FCEa3/cNMW0QIDAQAB
-----END PUBLIC KEY-----
//私钥
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQC+L0rfjLl3neHleNMOsYTW8r0QXZ5RVb2p/vvY3fJNNugvJ7lo4+fdBz+LN4mDxTz4MTOhi5e2yeAqx+v3nKpNmPzC5LmDjhHZURhwbqFtIpZD51mOfno2c3MDwlrsVi6mTypbNu4uaQzw/TOpwufSLWF7k6p2pLoVmmqJzQiD0QIDAQABAoGAakB1risquv9D4zX7hCv9MTFwGyKSfpJOYhkIjwKAik7wrNeeqFEbisqv35FpjGq3Q1oJpGkem4pxaLVEyZOHONefZ9MGVChT/MNH5b0FJYWl392RZy8KCdq376Vt4gKVlABvaV1DkapL+nLh7LMo/bENudARsxD55IGObMU19lkCQQDwHmzWPMHfc3kdY6AqiLrOss+MVIAhQqZOHhDe0aW2gZtwiWeYK1wB/fRxJ5esk1sScOWgzvCN/oGJLhU3kipHAkEAysNoSdG2oWADxlIt4W9kUiiiqNgimHGMHPwp4JMxupHMTm7D9XtGUIiDijZxunHv3kvktNfWj3Yji0661zHVJwJBAM8TDf077F4NsVc9AXVs8N0sq3xzqwQD/HPFzfq6hdR8tVY5yRMb4X7+SX4EDPORKKsgnYcur5lk8MUi7r072iUCQQC8xQvUne+fcdpRyrR4StJlQvucogwjTKMbYRBDygXkIlTJOIorgudFlrKP/HwJDoY4uQNl8gQJb/1LdrKwIe7FAkBl0TNtfodGrDXBHwBgtN/t3pyi+sz7OpJdUklKE7zMSBuLd1E3O4JMzvWP9wEE7JDb+brjgK4/cxxUHUTkk592
-----END RSA PRIVATE KEY-----

转载于:https://www.cnblogs.com/zhangjianqiang/p/10308029.html

相关文章:

  • centos7.5配置双网卡上网
  • 工作总结报告
  • 孤荷凌寒自学python第七十八天开始写Python的第一个爬虫8
  • java 多线程
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • Matplotlib中plt.rcParams用法(设置图像细节)
  • 14-tail-and-head-commands-linuxunix
  • Apollo的Oracle适配改动
  • 甄姬
  • Sql 排序
  • contest3 CF994 div2 ooxxx? oooox? ooooo?
  • 梯度下降算法对比(批量下降/随机下降/mini-batch)
  • Angular CLI的简单使用(2)
  • 最大团优化
  • 02-jQuery的选择器
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • angular学习第一篇-----环境搭建
  • css属性的继承、初识值、计算值、当前值、应用值
  • dva中组件的懒加载
  • es的写入过程
  • github指令
  • java概述
  • opencv python Meanshift 和 Camshift
  • PAT A1120
  • text-decoration与color属性
  • Vue 动态创建 component
  • vuex 学习笔记 01
  • 构建二叉树进行数值数组的去重及优化
  • 汉诺塔算法
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 坑!为什么View.startAnimation不起作用?
  • 来,膜拜下android roadmap,强大的执行力
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 突破自己的技术思维
  • 移动端 h5开发相关内容总结(三)
  • 7行Python代码的人脸识别
  • 说说我为什么看好Spring Cloud Alibaba
  • ​iOS实时查看App运行日志
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • #1015 : KMP算法
  • #pragma once
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (2)Java 简介
  • (4)(4.6) Triducer
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (LeetCode C++)盛最多水的容器
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)ssm码农论坛 毕业设计 231126
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (力扣题库)跳跃游戏II(c++)
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (学习日记)2024.02.29:UCOSIII第二节