当前位置:网站首页 > 技术博客 > 正文

rsa私钥加密私钥能解密么



目录

 

一、RSA简介

二、加密、签名区别

三、公私钥生成

四、RSA工具类


  非对称加密算法,由一对密钥(公钥-私钥)来进行加密-解密、签名-验签的过程。公钥-私钥的生成与数学相关,算法的原理是依靠对极大整数做因数分解的困难性来保证安全性。

  加密和签名都是为了信息传递途中的安全,原理略有不同,加密是防止信息明文传输被泄露,签名是防止信息被篡改。

加密场景:A服务器向B服务器传递一指令。

过程如下:

(1)B生成一对密钥(公钥-私钥),私钥B自己保留,公钥任何人可以获取。

(2)B传递自己的公钥给A,A用B的公钥对消息进行加密。

(3)B接收到A加密的消息,利用B自己的私钥对消息进行解密。

整个流程含两次传递过程,第一次是B传递公钥给A,第二次是A传递加密消息给B,即使都被第三方非法截获,也没有危险性,因为只有B的私钥才能对消息进行解密,防止了消息内容的泄露。

验签场景:B服务器收执行完A服务器发的指令后,向A回复执行结果。

过程如下:

(1)B用自己的私钥对回复的消息加签,形成签名,并将签名和消息本身一起传递给A。

(2)A收到回复后,使用B提供的公钥进行验签,如果验签解析出的内容与消息本身一致,证明消息是B回复的。

即使回复的消息被第三方非法截获,也没有危险性,因为接收方A使用的是B的公钥进行验签,只有B的私钥生成的签名才能通过A的验签,即使第三方非法获取消息内容,也无法伪造带签名的回复给A,防止了消息内容被篡改。

  但是不难发现,加密场景中,可以利用截获的公钥,将假指令进行加密,然后传递给B。验签场景中,虽然截获的消息不能被篡改,但是消息的内容可以利用公钥验签获得,并不能防止泄露。所以实际应用中要根据情况使用,最好同时使用加密和签名,比如A和B都有一套自己的公钥和私钥,当A要给B发送消息时,先用B的公钥对消息加密,再对加密的消息使用A的私钥加签名,达到既不泄露也不被篡改,从而保证消息的安全性(公钥加密、私钥解密、私钥签名、公钥验签)。

1.下载openssl工具,通过工具生成RSA的公钥和私钥,安装简单,不再赘述,安装后如下图:

2.双击openssl.exe文件,打开命令窗口,输入命令:genrsa -out rsa_private_key.pem 1024   并回车,得到生成成功的结果,如下图:

此时再看文件路径,发现bin文件夹中多了一个名为rsa_private_key.pem的文件,这个是原始的私钥,如下图:

3、把RSA私钥转换成PKCS8格式

命令窗口,输入命令:pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM –nocrypt   并回车,得到生成功的结果,这个结果就是PKCS8格式的私钥,如下图:

右键点击命令窗口上边缘,选择编辑→标记,选中要复制的文字(如下图),再次右键点击窗口上边缘,选择编辑→复制,即可获得PKCS8格式的私钥。

4、生成公钥
命令窗口,输入命令:rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem  并回车,得到生成成功的结果,如下图:

此时再看文件路径,发现bin文件夹中多了一个名为rsa_public_key.pem的文件,如下图:

以上,将公私密钥整理成没有换行的字符串,再配置到接口中使用即可。

 

版权声明


相关文章:

  • 完全二叉树是什么2024-11-04 10:30:01
  • python怎么调用py文件2024-11-04 10:30:01
  • crc16校验算法ccitt2024-11-04 10:30:01
  • sql游标的使用方法代码2024-11-04 10:30:01
  • i2c总线的基本操作2024-11-04 10:30:01
  • linux执行hbase命令2024-11-04 10:30:01
  • 二叉树先序遍历序列2024-11-04 10:30:01
  • 内存检测工具memtest怎么看结果2024-11-04 10:30:01
  • linux中user是什么意思2024-11-04 10:30:01
  • python多线程技术2024-11-04 10:30:01