RSA非对称加密算法
# 对称加密存在的问题
1. 秘钥管理困难
2. 秘钥分发困难
两个人如何保证秘钥不被窃取?
==解决办法:引用非对称加密==
RSA
1. 基本概念
私钥:使用随机数按照一定规则生成的
公钥:由私钥推导而来。
随机数据 =》算法 =》 私钥 =》 公钥
私钥:只有自己持有,不可以向任何人传播
公钥:任何人都可以持有,公钥加密的数据只能被配套的私钥解开。
2. openssl生成方式
#目前主流密钥长度至少都是1024bits以上,低于1024bit的密钥已经不建议使用(安全问题) OpenSSL> genrsa -out rsa_private_key.pem 1024 #生成私钥, 1024是密钥长度 #可以不指定私钥长度,默认是2048位,长度建议1024以上,这样安全!! OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem #生成公钥 OpenSSL> exit #退出OpenSSL程序
常见使用场景
1.通信加密
公钥加密,私钥解密
2. https
验证服务器,数字证书,使用ca认证公钥
3. 签名(防止篡改)
哈希+非对称加密
4. 网银U盾
验证client,U盾相当于私钥,公钥在服务端
5. github ssh(secure shell)登录
ssh: https://blog.csdn.net/PeipeiQ/article/details/80702514
ssh: https://www.cnblogs.com/yyds/p/6992125.html
> – ssh是一种网络协议,主要用于计算机之间的加密登录与数据传输
> – ssh登录的时候没有ca认证,需要用户自己确认登录主机的指纹,点击yes后把远程主机的指纹存放到本地的know_hosts中,后续登录会跳过警告。
> – ssh-keygen -t rsa,演示
RAS生成规则
拓展:什么是质数别名素数 反义词是合数
质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
所谓素数是说除1和它本身没有其他的约数,4除了1和4外,还有2这一个约数,所以它不是素数
4除了1和本身(4)以外,还有一个约数2。
4是合数
那么质数都有哪些
2 3 5 7 11 13 17 19 23 29 …
RSA生成规则 (了解知识点)
参考链接:https://www.cnblogs.com/jiftle/p/7903762.html
选择P,Q:100~200位的大素数 N: P * Q F(n) = (P -1 )(Q - 1) 选择E: 1 < E < F(n) D*E === 1 mod F(n), 同余运算符 =》 退出D
P:3, Q:11 N : 3 * 11 = 33 F(n) = (3 -1)(11-1) = 2 * 10 = 20 E: 1 < E < 20 ==> 选 3 ( D * E ) %F(n) = 1 ( D * 3 ) %20 = 1 => D选择7 公钥: {E, N} => {3, 33} 私钥: {D, N} => {7, 33}
加密时,先对明文进行转换,对数值进行加密
解密时,先根据规则解密,根据字符表转换为明文