RSA Encryption

致敬、参考

https://blog.csdn.net/dbs1215/article/details/48953589
https://www.jianshu.com/p/0f9b72d691c2
https://blog.csdn.net/weixin_37490221/article/details/80823129

RSA

RSA基本概念

RSA是一种非对称加密算法。
当时学计算机网络的时候对对称、非对称的概念很模糊,总是记不清。前两天SSH登录尝试了RSA免密登录,结合之前问过的老师的相关内容,对RSA的整个过程有了一个大致的了解。
私钥一定只有自己知道才能保证安全!!
密文=(明文E)mod N
明文=(密文D)mod N
符号说明:
N:由两个质数pq构成。
L:1<L<lcm(p-1,q-1) (p-1,q-1的最小公倍数)
E:1<E<L && gcd(E,L)=1
D: 1<D<L && E
D mod L=1 (这也印证了对E的定义中为什么E和L要互质)

实现过程

取p=17,q=19,则N=323
则L=lcm(16,18)=144
∵1<E<L && gcd(E,L)=1
∴ E=5
由1<D<L && ED mod L=1可得:7*D MOD 144 =1 -> 5D=145n(n∈N)(这里的N*代表正整数)
可得D=29
则:公钥对(E,N)=(5,323)
私钥对(D,N)=(29,323)
设原始消息M=233,经私钥加密后的密文=明文E mod N=275
解密过程中,明文=密文D mod N=233,还原成功。

RSA工作过程

原始需要发送的消息为m
公钥加密方法为pubencode()
公钥解密方法为pubdecode()
公钥加密/解密得到的内容为pub(m)
私钥加密方法为priencode()
私钥解密方法为pridecode()
私钥加密/解密得到的内容为pri(m)
Client————————–transmitting ————Server
M1->priencode()->pri(M1)-> ………….. pri(M1)->pubdecode()->M1
M2<-pridecode()<-pub(M2)<- ………….. pub(M2)<-pubencode()<-M2

SSH免密登陆

基于口令的验证

基于密钥的验证

使用RSA的公钥、私钥机制可以实现ssh免密登录。

工作流程:
1.client生成公钥,私钥,并且把公钥存储在server的authorized_keys文件里面
2.client发送连接请求,发送公钥
3.server如果发现client的公钥在authorized_keys文件里面的话,会生成一段随机字符串用公钥加密发送给client
4. client收到加密后的字符串后使用私钥解密,然后把解密后的字符串发给server
5.server验证字符串是否和发送的相等,相等的话则建立链接。