RSA加密/解密

举报
arnodev 发表于 2023/03/17 21:50:29 2023/03/17
【摘要】 RSA加密算法是一种可逆的非对称加密算法,即RSA加密时候用的密钥(公钥)和RSA解密时用的密钥(私钥)不是同一把。基本原理是将两个很大的质数相乘很容易得到乘积,但是该乘积分解质因数却很困难。RSA算法被广泛的用于加密解密和RSA签名/验证等领域。

一、RSA加密/解密在线教程

1.1、RSA算法介绍

RSA加密算法是一种可逆的非对称加密算法,即RSA加密时候用的密钥(公钥)和RSA解密时用的密钥(私钥)不是同一把。基本原理是将两个很大的质数相乘很容易得到乘积,但是该乘积分解质因数却很困难。RSA算法被广泛的用于加密解密和RSA签名/验证等领域。


1.2、RSA算法的速度与安全性

比起AES等其它对称算法来说,RSA运算更为复杂,所以要慢得多。

从安全角度来讲,一般建议RSA密钥长度至少为2048位。世界上还没有任何可靠的攻击RSA算法的方式,如果密钥足够长或者没有密钥,想要RSA解密或者破解RSA解密基本是不可能的。RSA从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。


1.3、RSA存储格式

DER是RSA密钥的二进制格式,PEM是DER转码为Base64的字符格式,由于DER是二进制格式,不便于阅读和理解。一般而言,密钥都是通过PEM的格式进行存储的,本工具所选择的RSA密钥格式也就是PEM编码存储的格式。


PKCS #1 标准主要用于 RSA密钥,RSA公钥和RSA私钥PEM格式:

// PKCS#1公钥格式
-----BEGIN RSA PUBLIC KEY-----
BASE64 DATA...
-----END RSA PUBLIC KEY-----
// PKCS#1私钥格式
-----BEGIN RSA PRIVATE KEY-----
BASE64 DATA...
-----END RSA PRIVATE KEY-----


PKCS#8 标准定义了一个密钥格式的通用方案,其公钥和私钥PEM格式:

// PKCS#8公钥格式
-----BEGIN PUBLIC KEY-----
BASE64 DATA...
-----END PUBLIC KEY-----
// PKCS#8私钥格式
-----BEGIN PRIVATE KEY-----
BASE64 DATA...
-----END PRIVATE KEY-----


经过对比,我们可以明显看到,PKCS #8 格式是没有rsa字样的,因为PKCS#8是一个通用型的密钥格式方案,它不仅为RSA算法所使用,同样也可以被其它加密解密算法所使用。


二、RSA加密/解密使用场景

本在线工具参考国际标准和行业惯例,列出五种主流的使用场景。虽然很多系统或函数默认使用公钥加密、私钥解密,但是RSA算法也支持私钥加密、公钥解密。因此从跨平台和兼容性考虑,一般推荐使用前者。


2.1、场景一:生成RSA公钥和私钥

首先输入证书密码(一般为空,无须输入),然后选择密钥格式和密钥长度,最后点击按钮即可得到对应的RSA密钥对,你可以预览、复制和下载RSA密钥对到本地。


2.2、场景二:使用RSA公钥加密文本

RSA加密解密算法支持三种填充模式,分别是ENCRYPTION_OAEP、ENCRYPTION_PKCS1、ENCRYPTION_NONE,RSA填充是为了和公钥等长。

  • ENCRYPTION_OAEP:最优非对称加密填充,英文为:Optimal Asymmetric Encryption Padding,是RSA加密和RSA解密最新最安全的推荐填充模式。当填充模式选择ENCRYPTION_OAEP时,必须选择参数Hash和MGFHash。
  • ENCRYPTION_PKCS1:随机填充数据模式,每次加密的结果都不一样,是RSA加密和RSA解密使用最为广泛的填充模式。当填充模式选择ENCRYPTION_PKCS1时,无须选择参数Hash和MGFHash。
  • ENCRYPTION_NONE:不填充模式,是RSA加密和RSA解密使用较少的填充模式。当填充模式选择ENCRYPTION_NONE时,无须选择参数Hash和MGFHash。


2.3、场景三:使用RSA私钥解密文本

主要用于RSA解密,具体RSA解密的操作方式为:

首先选择填充模式,当填充模式选择ENCRYPTION_OAEP时,必须选择参数Hash和MGFHash。如果证书设置了密码,则必须输入密码,然后输入RSA解密文本和RSA私钥。其中RSA解密文本必须为Base64编码后的字符串,最后点击按钮进行RSA解密。RSA解密时间受文本和网络影响,请耐心等待,RSA解密成功即可得到加密前的原始文本。


2.4、场景四:使用RSA私钥生成数字签名

RSA签名/验证算法支持两种填充模式,分别是SIGNATURE_PSS、SIGNATURE_PKCS1。

  • SIGNATURE_PSS:概率签名方案,英文为:Probabilistic Signature Scheme,它是RSA签名的推荐方案,用于替代PKCS1。当填充模式选择SIGNATURE_PSS时,必须选择参数Hash和MGFHash。
  • SIGNATURE_PKCS1:公钥密码标准的第一版方案,此RSA签名的填充模式虽然已经不安全但是使用最为广泛。当填充模式选择SIGNATURE_PKCS1时,必须选择参数Hash。


2.5、场景五:使用RSA公钥验证数字签名

首先选择填充模式,当填充模式选择SIGNATURE_PSS时,必须选择参数Hash和MGFHash,填充模式为SIGNATURE_PKCS1时,必须选择参数Hash,然后输入需要验证的原始文本、RSA公钥和数字签名即可。其中参数、原文和数字签名匹配时,则验证结果返回true,否则返回false。

本教程引自《试试吧 - 领先的在线工具平台》,主打原创,全部免费,打开浏览器搜:试试吧,全网排名第一的就是本站,敬请 收藏和分享,快来试试吧:RSA加密/解密 - 在线工具

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。