RSA公钥、私钥生成,详细讲解

以下操作全部为终端命令进行操作

1.首先我们要会生成RSA密钥文件,现在一步步的来给大家展示一下,如何生成我们所需的公钥和私钥文件:

RSA密钥生成过程

2.生成私钥文件

$ openssl genrsa -out private.pem 1024

openssl:是一个自由的软件组织,专注做加密和解密的框架。

genrsa:指定了生成了算法使用RSA

-out:后面的参数表示生成的key的输入文件

1024:表示的是生成key的长度,单位字节(bits)

Snip20160323_3.png

3.创建证书请求

$ openssl req -new -key private.pem -out rsacert.csr

可以拿着这个文件去数字证书颁发机构(即CA)申请一个数字证书。CA会给你一个新的文件cacert.pem,那才是你的数字证书。(要收费的)

Snip20160323_4.png

Snip20160323_5.png

4.生成证书并签名,有效期10年

$ openssl x509 -req -days 3650 -in rsacert.csr -signkey private.pem -out rsacert.crt

509是一种非常通用的证书格式。

将用上面生成的密钥privkey.pem和rsacert.csr证书请求文件生成一个数字证书rsacert.crt。这个就是公钥

![Upload Snip20160323_6.png failed. Please try again.]

5.转换格式 将 PEM 格式文件 转换成 DER 格式

$ openssl x509 -outform der -in rsacert.crt -out rsacert.der

在 iOS开发中,公钥是不能使用base64编码的,上面的命令是将公钥的base64编码字符串转换成二进制数据

Snip20160323_7.png

6.导出 P12 文件

在iOS使用私钥不能直接使用,需要导出一个p12文件。下面命令就是将私钥文件导出为p12文件。

$ openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsacert.crt

Snip20160323_8.png

执行完上面的这些,我们现在就得到了四个文件

Snip20160323_9.png

Snip20160323_10.png

需要在finder中进行搜搜,搜p.p12、reacert.der即可,为了方便查找,可将其导出到别的文件夹中。

注:p.p12 为私钥 reacert.der 为公钥

作者:QQWANG丶
链接:https://www.jianshu.com/p/bfa57e049a7e
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文地址:https://www.cnblogs.com/jiangzhaowei/p/8996557.html

时间: 2024-10-29 18:23:48

RSA公钥、私钥生成,详细讲解的相关文章

Python rsa公私钥生成 rsa公钥加密(分段加密)私钥加签实战

一般现在的SAAS服务提供现在的sdk或api对接服务都涉及到一个身份验证和数据加密的问题.一般现在普遍的做法就是配置使用非对称加密的方式来解决这个问题,你持有SAAS公司的公钥,SAAS公司持有你的公钥,你们就可以进行加密和签名的验证了. 先来看下两种在linux或者mac下面生成key pair的方法: 使用openssl 生成一把2048bit长度的钥匙对,首先我们生成一把.pem格式的私钥: openssl genrsa -out private_key.pem 2048 然后通过这把私

php RSA公钥私钥加解密和验证用法

现在很多项目中会使用到rsa加解密和验证相关的技术,分别整理代码如下,方便记忆和使用. [签名和验证] 1 //获得签名 2 function getSign($data) { 3 $pem = 'my_rsa_private_key.pem'; 4 $privateKey = openssl_get_privatekey(file_get_contents($pem)); 5 openssl_sign($data, $sign, $privateKey); 6 openssl_free_key

mac上使用生成RSA公钥和密钥

关于RSA加密解密的问题,没事弄了一下,先把主要的流程保存下来,以备交流或者以后用. 首先确保你的电脑上安装了openssl,一般mac系统安装后都会自动安装!怎么安装??.....请百度...... 安装命令如下: sudo apt-get install openssl 在你的任何地方创建一个Folder来保存你的公钥和密钥, 打开终端Terminal,cd命令进入到你创建的Folder中,比如在桌面新建一个”RSA公钥私钥“文件夹,进入这个文件夹,命令如图: 接下来我们开始生成公钥和密钥:

Android 获取签名公钥 和 公钥私钥加解密

public class GetPublicKey { /** * 获取签名公钥 * @param mContext * @return */ protected static String getSignInfo(Context mContext) { String signcode = ""; try { PackageInfo packageInfo = mContext.getPackageManager().getPackageInfo( GetAppInfo.getPack

如何使用openssl生成RSA公钥和私钥对

公私玥可使用OPENSSL工具生成. 在Windows环境下,可自行下载OPENSSL工具( http://www.openssl.org/related/binaries.html). 在Linux环境下,可安装OPENSSL工具包(以ubuntu为例,执行sudo apt-get install openssl). 在Windows环境下,打开OPENSSL安装目录bin文件下面的openssl.exe.在Linux环境下,直接在终端中运行openssl. 1)生成RSA私钥: genrsa

使用openssl 生成RSA公钥和私钥

sudo apt-get install openssl 安装完成就可以使用openssl了. 首先需要进入openssl的交互界面,在命令行了输入openssl即可: 1)生成RSA私钥: genrsa -out rsa_private_key.pem 1024 该命令会生成1024位的私钥,生成成功的界面如下: 此时我们就可以在当前路径下看到rsa_private_key.pem文件了. 2)把RSA私钥转换成PKCS8格式输入命令pkcs8 -topk8 -inform PEM -in r

openssl生成RSA公钥和私钥对

在ubuntu上要使用openssl的话需要先进行安装,命令如下: sudo apt-get install openssl 安装完成就可以使用openssl了. 首先需要进入openssl的交互界面,在命令行了输入openssl即可: 1)生成RSA私钥: genrsa -out rsa_private_key.pem 1024 该命令会生成1024位的私钥,生成成功的界面如下: 此时我们就可以在当前路径下看到rsa_private_key.pem文件了. 2)把RSA私钥转换成PKCS8格式

java RSA 生成公钥私钥

/** * 引进的包都是Java自带的jar包 * 秘钥相关包 * base64 编解码 * 这里只用到了编码 */ import java.security.Key; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; imp

centos生成公钥私钥 securecrt通过公钥访问服务器 winscp通过公钥访问服务器

忙碌了一下午,一直到写博客现在.都在纠结阿里云服务器上配置公钥私钥,网上的说辞总是参差不齐,需要各个去综合,合理取舍.今天终于配置好了. 我就不说这种方式的重要性了,往往黑客都不需要你的登陆账户密码就能上你的服务器,多么可怕.比如[redis后门]自己百度哈. 直入主题: [[email protected] .ssh]$ ssh-keygen -C"liyongdada" -t rsa    Generating public/private rsa key pair.    Ent

Java中使用OpenSSL生成的RSA公私钥进行数据加解密

RSA是什么:RSA公钥加密算法是1977年由Ron Rivest.Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的.RSA取名来自开发他们三者的名字.RSA是目前最有影响力的公钥加密算法,它能够 抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准.目前该加密方式广泛用于网上银行.数字签名等场合.RSA算法基于一个十分简单的 数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥. OpenSSL是什