rsa公钥和私钥到底哪个才是用来加密,哪个用来解密?

本文转自:91博客;原文地址:http://www.9191boke.com/138589019.html

公钥和私钥在一些银行系统、第三方支付系统SDK中经常会遇到,刚接触公钥私钥的朋友们估计很难区分两者的区别。

RSA公钥和私钥是什么?

首先来说,RSA是一种非对称加密算法,它是由三位数学家(Rivest、Shamir、Adleman)设计出来的。非对称加密是相对于对称加密而言的。对称加密算法是指加密解密使用的是同一个秘钥,而非对称加密是由两个密钥(公钥、私钥)来进行加密解密的,由此可见非对称加密安全性更高。

公钥顾名思义就是公开的密钥会发放给多个持有人,而私钥是私有密码往往只有一个持有人。

公私钥特性

  • 公钥与私钥是成对出现的;
  • 私钥文件中包含了公钥数据,所以可以基于私钥导出公钥;
  • 密钥越长,越难破解,所以2048位密钥比1024位密钥要更安全;
  • 公钥和私钥都是密钥,被公开的那个就是公钥,没有被公开的那个就是私钥。

公钥和私钥都可用于加密和解密

公钥和私钥都可以用于加解密操作,用公钥加密的数据只能由对应的私钥解密,反之亦然。虽说两者都可用于加密,但是不同场景使用不同的密钥来加密,规则如下:

1、私钥用于签名、公钥用于验签

签名和加密作用不同,签名并不是为了保密,而是为了保证这个签名是由特定的某个人签名的,而不是被其它人伪造的签名,所以私钥的私有性就适合用在签名用途上。

私钥签名后,只能由对应的公钥解密,公钥又是公开的(很多人可持有),所以这些人拿着公钥来解密,解密成功后就能判断出是持有私钥的人做的签名,验证了身份合法性。

2、公钥用于加密、私钥用于解密,这才能起到加密作用

因为公钥是公开的,很多人可以持有公钥。若用私钥加密,那所有持有公钥的人都可以进行解密,这是不安全的!

若用公钥加密,那只能由私钥解密,而私钥是私有不公开的,只能由特定的私钥持有人解密,保证的数据的安全性。

原文地址:https://www.cnblogs.com/007sx/p/10987906.html

时间: 2024-11-10 20:09:23

rsa公钥和私钥到底哪个才是用来加密,哪个用来解密?的相关文章

加密,认证疑难名词总结----RSA, 公钥,私钥,CA,数字签名,数字证书

在网络和操作系统安全通信中经常涉及到这几个名词: RSA, 公钥,私钥,CA,数字签名,数字证书.我找了很多资料,很少有把疑难点讲全面的.但不讲清楚这几个,很难有一个清晰的认识和理解.我现在也尝试这样的方式,自己总结,以便后来查看,同时也希望能帮助一些人少走弯路,省去baidu, google, 看RFC的时间. 对称和非对称,公钥和私钥:加密的两种方式:对称加密和非对称加密.对称加密:加密的密钥也叫公钥和解密的密钥(也叫私钥)相同.特点是算法公开.计算量小.加密速度快.加密效率高.非对称加密:

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

以下操作全部为终端命令进行操作 1.首先我们要会生成RSA密钥文件,现在一步步的来给大家展示一下,如何生成我们所需的公钥和私钥文件: RSA密钥生成过程 2.生成私钥文件 $ openssl genrsa -out private.pem 1024 openssl:是一个自由的软件组织,专注做加密和解密的框架. genrsa:指定了生成了算法使用RSA -out:后面的参数表示生成的key的输入文件 1024:表示的是生成key的长度,单位字节(bits) Snip20160323_3.png

如何使用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格式

RSA公钥,私钥和数字签名通用理解

一.公钥加密 假设一下,我找了两个数字,一个是1,一个是2.我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥. 我有一个文件,不能让别人看,我就用1加密了.别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有我可以用数字2,就是我的私钥,来解密.这样我就可以保护数据了. 我的好朋友x用我的公钥1加密了字符a,加密后成了b,放在网上.别人偷到了这个文件,但是别人解不开,因为别人不知道2就是我的私钥,只有我才能解密,解密后就得到a.这样,我们就可以传送

在线支付之支付宝无线支付的RSA公钥和私钥的产生

公钥和私钥都使用支付宝提供的SDK里的openssl工具产生,具体的操作在“生成命令.txt”里面有.要注意的是,生成的 支付宝公钥是在“rsa_public_key.pem”文件里面的,要更新到支付宝的PID和KEY管理界面去.而程序里面要用的私钥 是使用命令行“pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt”后出来的一串字符串, 而不是“rsa_private_key.pem”里的字符串.

把Java生成的RSA公钥、私钥转换成.NET使用的XML格式

1 private static String getRSAPrivateKeyAsNetFormat(byte[] encodedPrivkey) { 2 try { 3 StringBuffer buff = new StringBuffer(1024); 4 5 PKCS8EncodedKeySpec pvkKeySpec = new PKCS8EncodedKeySpec( 6 encodedPrivkey); 7 KeyFactory keyFactory = KeyFactory.g

公钥、私钥、数字签名、数字证书、对称与非对称算法、HTTPS

对公钥和私钥有点稀里糊涂的,搜索了一些资料,作一些整理吧,先看这个: 加密--公钥解密--私钥签名--私钥验证--公钥 看了这个也许会对私钥用于签名不解,其实它等同于用私钥加密,而公钥验证就是用公钥解密,但是不能用于保密信息.因为公钥是公开的. 再来一个: 1)公钥和私钥成对出现2)公开的密钥叫公钥,只有自己知道的叫私钥3)用公钥加密的数据只有对应的私钥可以 解密4)用私钥加密的数据只有对应的公钥可以解密5)如果可以用公钥解密,则必然是对应的私钥加的密6)如果可以用私钥解密,则 必然是对应的公钥