RSA加密/解密

RSA加密和RSA解密在线工具,生成RSA密钥对、RSA加密解密、RSA数字签名。

场景一:根据密钥格式和密钥长度生成RSA密钥对。
1.1、请输入RSA私钥的证书密码。
证书密码
1.2、请设置生成参数。
密钥格式
密钥长度
场景二:使用RSA公钥加密文本。
2.1、请上传或输入RSA公钥。
2.2、请设置加密参数。
填充模式
Hash算法
MGFHash算法
场景三:使用RSA私钥解密文本。
3.1、请上传或输入RSA私钥。
3.2、请设置解密参数。
填充模式
Hash算法
MGFHash算法
证书密码
场景四:使用RSA私钥生成数字签名。
4.1、请上传或输入RSA私钥。
4.2、请设置生成参数。
填充模式
Hash算法
MGFHash算法
证书密码
场景五:使用RSA公钥验证数字签名。
5.1、请上传或输入RSA公钥。
5.2、请设置验证参数。
填充模式
Hash算法
MGFHash算法
  操作文档

一、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加密/解密在线工具使用方式

各场景均已设置推荐的默认值,您也可以根据实际需求进行调整。小提示:当前在线工具的RSA加密和签名结果使用Base64编码的字符串。以下为RSA加密解密在线工具使用参考。

  • 证书密码:证书密钥一般指证书私钥的密码,一般为空;
  • 密钥格式:PKCS#1为早期版本,使用更广泛,但是考虑长远和兼容性,推荐PKCS#8;
  • 密钥长度:较短的密钥已被成功分解,因此推荐升级到2048 Bits的密钥长度;
  • 填充模式:RSA加密和RSA签名使用的填充模式不同,详情参考各场景;
  • Hash:又称为散列算法/哈希函数,RSA支持MD2/MD5/SHA-1/SHA-224/SHA-256/SHA-384/SHA-512等;
  • MGFHash:掩码生成函数,基于Hash构建,当加密填充模式为OAEP或签名填充模式为PSS使用。