ESSAY / NOTE

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}
加密时,先对明文进行转换,对数值进行加密 解密时,先根据规则解密,根据字符表转换为明文