Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PHP怎么使用OpenSSL生成RSA加解密所需要的公私钥?

PHP怎么使用OpenSSL生成RSA加解密所需要的公私钥?

作者头像
沈唁
发布于 2018-08-21 07:10:55
发布于 2018-08-21 07:10:55
1.6K00
代码可运行
举报
文章被收录于专栏:沈唁志沈唁志
运行总次数:0
代码可运行

RSA算法是现今使用最广泛的公钥密码算法,也是是号称地球上最安全的加密算法,与 md5 和 sha1 不同,到目前为止,也只有极短的RSA加密被破解

根据密钥的使用方法,可以将密码分为对称密码和公钥密码

对称密码:加密和解密使用同一种密钥的方式,常用的算法有DES以及AES

公钥密码:加密和解密使用不同的密码的方式,因此公钥密码通常也称为非对称密码,常用的算法有 RSA

RSA加密的使用的场景很多,比如在编写API接口的时候、进行支付等安全需求比较高的通信以及进行数据传输的时候都需要用到加密措施来保证数据的安全

最近在打算做一个授权系统,也要用到这个RSA加密算法,所以这篇文章先说一下怎么生成RSA加解密所需要的公私钥

Windows下生成需要openssl.cof的支持,如果你装了Git bash客户端的话,也可以直接操作

我这里使用的是PHPStudy的集成环境,在它的Apache\conf目录下就有一个openssl.cof,我们可以直接拿来使用

先说使用openssl.cof的操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
$config = array(
    "config" => "D:\phpStudy\Apache\conf\openssl.cnf",
    "digest_alg" => "sha512",
    "private_key_bits" => 1024, //字节数    512 1024  2048   4096 等
    "private_key_type" => OPENSSL_KEYTYPE_RSA, //加密类型
);
//创建公钥和私钥   返回资源
$res = openssl_pkey_new($config);
//从得到的资源中获取私钥,把私钥赋给$privKey
openssl_pkey_export($res, $privKey, null, $config);
//从得到的资源中获取公钥,返回公钥$pubKey
$pubKey = openssl_pkey_get_details($res);
$pubKey = $pubKey["key"];

echo '<pre>';
var_dump(array('privKey' => $privKey, 'pubKey' => $pubKey));

config指向的路径改为你的openssl.cof的路径,加密类型和字节数可以根据你的需求去更改

下面说一下使用Git bash来操作,首先,生成原始 RSA 私钥文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
openssl genrsa -out rsa_private_key.pem 1024

其次,将原始RSA私钥转换为pkcs8格式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pem

最后,生成RSA公钥

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

举一个简单的栗子 ?

公钥、私钥都可以加密,也都可以解密

用公钥加密需要私钥解密,称为“加密”。由于私钥是不公开的,确保了内容的保密,没有私钥无法获得内容

使用公钥加密数据,刷新或者重新请求会改变加密后返回的字符串

用私钥加密需要公钥解密,称为“签名”。由于公钥是公开的,任何人都可以解密内容,但只能用发布者的公钥解密,验证了内容是该发布者发出的

使用私钥加密数据,刷新或者重新请求不会改变加密后返回的字符串

沈唁志|一个PHPer的成长之路! 原创文章采用CC BY-NC-SA 4.0协议进行许可,转载请注明:转载自:PHP怎么使用OpenSSL生成RSA加解密所需要的公私钥?

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
20.2 OpenSSL 非对称RSA加解密算法
RSA算法是一种非对称加密算法,由三位数学家Rivest、Shamir和Adleman共同发明,以他们三人的名字首字母命名。RSA算法的安全性基于大数分解问题,即对于一个非常大的合数,将其分解为两个质数的乘积是非常困难的。
王 瑞
2023/10/29
5300
20.2 OpenSSL 非对称RSA加解密算法
Php和Java之间RSA加解密实战
最近一项目采用分层架构,前端是Php,后端是Java,一些敏感数据传输采用加密处理,中间调试起来也是非常麻烦,因为每个语言实现的不一样,Php因为语言层面已经封装了,使用起来不用关注太多,但要了解原理就得看C语言写的代码了,反过来Java的实现就繁琐一些,对使用者不太友好,不过相对来说也比较容易了解原理了。
心平气和
2021/04/01
1.2K0
PHP 使用非对称加密算法(RSA)
  以前一直对客户端传给服务器的信息加密这一块一脸懵,如果app里面的用户登录信息被抓包拿到了,大写着 username:root,password:123456,  那不是很尴尬。
Lansonli
2021/10/09
1.9K0
RSA 敏感数据加解密方案
RSA密码是1978年美国麻省理工学院三位密码学者R.L.Rivest、A.Shamir和L.Adleman提出的一种基于大合数因子分解困难性的公开密钥密码。由于RSA密码既可用于加密,又可用于数字签名,通俗易懂,因此RSA密码已成为目前应用最广泛的公开密钥密码。RSA算法是现今使用最广泛的公钥密码算法,也是号称地球上最安全的加密算法。在了解RSA算法之前,先熟悉下几个术语,根据密钥的使用方法,可以将密码分为对称密码和公钥密码。
架构探险之道
2020/08/17
1.3K0
openssl加解密实战
密钥加密(secret-key encryption)使用相同的密钥进行加密和解密,也叫对称加密
雪人
2022/10/13
1.3K0
RSA密文过长加密解密 越过1024的解决代码
RSA (详见维基百科)算法是现今使用最广泛的公钥密码算法,也是号称地球上最安全的加密算法,与 md5 和 sha1 不同,到目前为止,也只有极短的RSA加密被破解。
Tinywan
2019/07/16
5.1K0
RSA 加密算法与 golang 代码实现
最近参与借贷业务的开发,接口传输过程中需要使用 RSA 加密算法对请求和返回进行加密,所以写了这篇博客。主要介绍 RSA 的基础知识和 golang 使用例子
_春华秋实
2023/11/27
5110
怎么把已有的RSA公私钥转换成PKCS8格式
1)、Linux用户(以Ubuntu为例) sudo apt-get install openssl
全栈程序员站长
2022/06/30
2.6K0
怎么把已有的RSA公私钥转换成PKCS8格式
RSA加密传输代码示例
涉及敏感数据的传输,双方最好约定使用加密解密。那RSA非对称加密就大有作为了。 服务端可以保留自己的私钥,发给客户端对应的公钥。这样就可以互相加解密了。php中rsa加解密实现:
Tinywan
2019/07/16
1.4K0
RSA加密/解密
RSA加密算法是一种可逆的非对称加密算法,即RSA加密时候用的密钥(公钥)和RSA解密时用的密钥(私钥)不是同一把。基本原理是将两个很大的质数相乘很容易得到乘积,但是该乘积分解质因数却很困难。RSA算法被广泛的用于加密解密和RSA签名/验证等领域。
arnodev
2023/03/17
7.1K0
公钥私钥的那点事儿
生成秘钥参考官网:https://docs.open.alipay.com/291/105971
IT茂茂
2020/03/05
3.9K1
公钥私钥的那点事儿
使用 openssl 生成证书(含openssl详解)
openssl 是目前最流行的 SSL 密码库工具,其提供了一个通用、健壮、功能完备的工具套件,用以支持SSL/TLS 协议的实现。 官网:https://www.openssl.org/source/
菲宇
2019/06/12
18.3K0
使用 openssl 生成证书(含openssl详解)
支付平台架构:终端安全技术实现
前蚂蚁集团宣布即将IPO之后,9月11日晚间,以金融支付起家的京东数科也要上市了。近年来,第三方支付业务的资金规模不断扩大,支付业务量稳步增长,“第三方支付”及“移动支付”已成为年度搜索热词,支付平台作为互联网产品及其在商业化过程中信息流和资金流的支撑,也成为国外内各大互联网公司必建的基础平台之一。 安全交易是互联网产品电子商务发展的核心内容之一,支付系统的安全则是安全交易的关键所在。 对于从事支付行业的第三方支付机构来说,终端数据的安全防护无疑是支付业务发展的重要保证之一,是安全防护长城的第一关。支付系统
博文视点Broadview
2023/05/19
1.2K0
支付平台架构:终端安全技术实现
RSA工具集-openssl,rsatool,RsaCtfTool,RSAtool
用法一:已知公钥(自动求私钥) –publickey,密文 —-uncipherfile。 将文件解压复制到RsaCtfTool里:
小简
2022/12/29
1.9K0
RSA工具集-openssl,rsatool,RsaCtfTool,RSAtool
openssl安装与使用
可以通过源码安装也可以apt-get install安装,安装openssl之前先看一下自己是否安装有openssl
全栈程序员站长
2022/07/22
4.9K0
openssl安装与使用
加密工具类,提供RSA & AES & DES 等加密解密方法工具类介绍加密解密概念使用方法公钥、私钥生成
github项目地址 https://github.com/XHTeng/XHCryptorTools 工具类介绍 框架从 CryptoExercise(苹果3.0时的包)进行提取扩展 iOS 系统自带相关函数说明,框架主要使用前两种: SecKeyEncrypt 使用公钥对数据加密 SecKeyDecrypt 使用私钥对数据解密 SecKeyRawVerify 使用公钥对数字签名进行验证 SecKeyRawSign 使用私钥生成数字签名 普遍的加密方法:客户端用RSA的公钥加密AES的秘钥
用户2141756
2018/05/18
2.3K0
RSA der加密 p12解密以及配合AES使用详解
在前面的文章中我有说过AES和RSA这两种加密方式,正好在前段时间再项目中有使用到,在这里再把这两种加密方式综合在一起写一下,具体到他们的使用,以及RSA各种加密文件的生成。
Mr.RisingSun
2019/08/14
2.3K0
RSA der加密 p12解密以及配合AES使用详解
RSA 证书加解密通信
经常有需要使用安全传输的场景,尤其是在一些泛及资金安全的行业,对数据的传输犹为重视安全性。 一般常用的就是对前参的数据进行加密,再到后台进行解密。 接口和接口之前的数据也用一样的方式进行加密和解密。
潇洒
2023/10/20
4970
RSA 证书加解密通信
20.6 OpenSSL 套接字分发RSA公钥
通过上一节的学习读者应该能够更好的理解RSA加密算法在套接字传输中的使用技巧,但上述代码其实并不算完美的,因为我们的公钥和私钥都必须存储在本地文本中且公钥与私钥是固定的无法做到更好的保护效果,而一旦公钥与私钥泄密则整个传输流程都将会变得不安全,最好的保护效果是RSA密钥在每次通信时都进行变换,依次来实现随机密钥对的功能。
王 瑞
2023/11/04
2300
20.6 OpenSSL 套接字分发RSA公钥
再谈加密-RSA非对称加密的理解和使用
枕边书
2018/01/04
2.9K0
相关推荐
20.2 OpenSSL 非对称RSA加解密算法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验