RSA加密算法
RSA加密算法 是一种 非对称加密算法,在公开密钥加密和电子商业中被广泛使用。例如:
在HTTPS协议的加密层(SSL/TLS)作为密钥交换的方法
支付宝支付API作为签名算法
银联支付API作为签名算法
Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议
非对称加密算法
公开密钥密码学 (英语:Public-key cryptography,也称 非对称式密码学 )是密码学的一种算法,它需要两个密钥,一个是公开密钥,另一个是私有密钥;一个用作加密,另一个则用作解密。使用其中一个密钥把明文加密后所得的密文,只能用相对应的另一个密钥才能解密得到原本的明文;甚至连最初用来加密的密钥也不能用作解密。由于加密和解密需要两个不同的密钥,故被称为非对称加密; 不同于加密和解密都使用同一个密钥的对称加密。虽然两个密钥在数学上相关,但如果知道了其中一个,并不能凭此计算出另外一个;因此其中一个可以公开,称为公钥,任意向外发布;不公开的密钥为私钥,必须由用户自行严格秘密保管,绝不透过任何途径向任何人提供,也不会透露给被信任的要通信的另一方。
工作原理
本质就是依赖于三个自然数:n,e,d,n 和 d 构成一个密钥,n 和 e 构成另一个密钥。对于(n, d)与(n, e)这两个密钥,无论用哪个密钥加密出来的密文都可以用另一个密钥解开, 所以不必强调哪个用于加密,哪个用于解密,只要把一个公布出去(称为公钥),另一个自己藏着(称为私钥)就行了。
根据这种特性,通常,
使用 公钥加密 , 私钥解密 ,实现 加密。
使用 私钥加密 , 公钥解密 ,实现 数字签名 。
代替 密码散列函数+Token,比如MD5、SHA2,做 消息认证。(关于加密、数字签名,消息认证可以期待下篇文章。)
关于
如何确定 n,e,d 这三个自然数?
如何进行加密解密?
已知公钥如何破解私钥?
我们需要了解RSA加解密的数学原理,主要包括
互质
欧拉函数
同余
欧拉定理
模反元素
扩展欧几里得算法
由于下面内容涉及到 公式
和 证明
,而公众号不支持 LaTex
表达式,详情可以点击 左下角“阅读原文” 查看
阅读原文。