RSA加密算法是一种可逆的非对称加密算法,即RSA加密时候用的密钥(公钥)和RSA解密时用的密钥(私钥)不是同一把。基本原理是将两个很大的质数相乘很容易得到乘积,但是该乘积分解质因数却很困难。RSA算法被广泛的用于加密解密和RSA签名/验证等领域。
比起AES等其它对称算法来说,RSA运算更为复杂,所以要慢得多。
从安全角度来讲,一般建议RSA密钥长度至少为2048位。世界上还没有任何可靠的攻击RSA算法的方式,如果密钥足够长或者没有密钥,想要RSA解密或者解析RSA解密基本是不可能的。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-----