RSA加密/解密

简介: 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加密/解密 - 在线工具

目录
相关文章
|
2月前
|
算法 安全 网络安全
非对称加密算法RSA
RSA是一种基于数论的非对称加密算法,依赖大整数质因数分解的困难性保证安全性。它生成公钥和私钥,公钥加密,私钥解密,适用于数据加密、数字签名和互联网安全等领域。尽管计算效率低、适合小量数据处理,但由于其兼容性、安全性和广泛应用于SSL/TLS、数字签名等,RSA仍是主流加密算法之一。
44 2
|
2月前
|
算法 安全 Java
Java 实现 RSA 非对称加密算法-加解密和签名验签
Java 实现 RSA 非对称加密算法-加解密和签名验签
136 0
|
2月前
|
机器学习/深度学习 算法 安全
【加密算法】RSA非对称加密算法简介
【加密算法】RSA非对称加密算法简介
|
2月前
|
前端开发 JavaScript Java
RSA加密---前端---后端解密
RSA加密---前端加---后端解密
325 0
|
2月前
|
JavaScript 前端开发 测试技术
Postman 加密接口测试 | 使用Rsa、Aes对参数加密
Postman 加密接口测试 | 使用Rsa、Aes对参数加密
382 0
|
10月前
|
算法 安全 数据安全/隐私保护
RSA非对称加密算法
本实验带您实现了解并使用非对称加密与RSA算法。
127 0
|
2月前
|
算法 数据库 数据安全/隐私保护
rsa加密解密,使用rsa对密码加密
rsa加密解密,使用rsa对密码加密
|
14天前
|
安全 网络安全 数据安全/隐私保护
非对称加密的日常实践应用:以RSA加密为例
**RSA加密简介与Python实现** RSA,一种非对称加密技术,基于大数因子分解,用于数据加密和完整性保护。本文介绍了RSA基本原理,包括密钥生成(选取大质数p和q,计算n和φ(n),选择公钥指数e和私钥指数d),并展示了使用Python `cryptography` 库生成密钥对、加密和解密消息的代码示例。通过这些步骤,读者可理解RSA在网络安全中的应用,如HTTPS和数字签名。
24 3
|
6天前
|
存储 安全 算法
RSA非对称加密算法中的密钥对生成与传输
RSA非对称加密算法的密钥对生成与传输是信息安全领域的核心问题之一。密钥生成过程需要保证随机性和安全性,而密钥的传输则需要选择适当的方式来确保其保密性和完整性。通过合理的密钥管理和保护措施,可以有效地利用RSA算法保护通信安全,防止信息泄露和篡改。在实际应用中,用户和系统管理员需要结合具体情况选择最佳的密钥生成和传输策略,以达到最佳的安全性和效率。
|
2月前
|
存储 算法 安全
加密解密(RSA)非对称加密算法
加密解密(RSA)非对称加密算法