一、RSA加密/解密在线教程1.1、RSA算法介绍RSA加密算法是一种可逆的非对称加密算法,即RSA加密时候用的密钥(公钥)和RSA解密时用的密钥(私钥)不是同一把。基本原理是将两个很大的质数相乘很容易得到乘积,但是该乘积分解质因数却很困难。RSA算法被广泛的用于加密解密和RSA签名/验证等领域。
从安全角度来讲,一般建议RSA密钥长度至少为2048位。世界上还没有任何可靠的攻击RSA算法的方式,如果密钥足够长或者没有密钥,想要RSA解密或者破解RSA解密基本是不可能的。RSA从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。
PKCS#1标准主要用于RSA密钥,其RSA公钥和RSA私钥PEM格式:
//PKCS#1公钥格式——-BEGINRSAPUBLICKEY——-BASE64DATA…——-ENDRSAPUBLICKEY——-//PKCS#1私钥格式——-BEGINRSAPRIVATEKEY——-BASE64DATA…——-ENDRSAPRIVATEKEY——-
PKCS#8标准定义了一个密钥格式的通用方案,其公钥和私钥PEM格式:
//PKCS#8公钥格式——-BEGINPUBLICKEY——-BASE64DATA…——-ENDPUBLICKEY——-//PKCS#8私钥格式——-BEGINPRIVATEKEY——-BASE64DATA…——-ENDPRIVATEKEY——-
经过对比,我们可以明显看到,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:最优非对称加密填充,英文为:OptimalAsymmetricEncryptionPadding,是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解密的操作方式为:
2.4、场景四:使用RSA私钥生成数字签名RSA签名/验证算法支持两种填充模式,分别是SIGNATURE_PSS、SIGNATURE_PKCS1。
SIGNATURE_PSS:概率签名方案,英文为:ProbabilisticSignatureScheme,它是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。
全国首批获得可信云服务认证对象存储服务:N002002云数据库服务:N003002