应用安全入门-RSA加密

600 阅读2分钟

1.起源

在1976年以前,所有的加密方法都是同一种模式:加密、解密使用同一种算法。在交互数据的时候,彼此通信的双方就必须将规则告诉对方,否则没法解密。那么加密和解密的规则(简称密钥),它保护就显得尤其重要。传递密钥就成为了最大的隐患。这种加密方式被成为对称加密算法(symmetric encryption algorithm)

1976年,两位美国计算机学家 迪菲(W.Diffie)、赫尔曼( M.Hellman ) 提出了一种崭新构思,可以在不直接传递密钥的情况下,完成密钥交换。这被称为“迪菲赫尔曼密钥交换”算法。开创了密码学研究的新方向。

1977年三位麻省理工学院的数学家 罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起设计了一种算法,可以实现非对称加密。这个算法用他们三个人的名字命名,叫做RSA算法。

2.原理

其加密方式比较特殊,需要两个密钥:公开密钥简称公钥(publickey)和私有密钥简称私钥(privatekey)。公钥加密,私钥解密;私钥加密,公钥解密。这个加密算法就是伟大的RSA

3.先学习数学

欧拉函数:

在数论,对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目(因此φ(1)=1)。此函数以其首名研究者欧拉命名(Euler's totient function),它又称为Euler's totient function、φ函数、欧拉商数等。 例如φ(8)=4,因为1,3,5,7均和8互质。

举个例子:φ(42) = φ(6*7) = φ(6) * φ(7) = (6-1) * (7-1) = 5 * 6 = 30

RSA诞生:

4.演示

生成RSA私钥,密钥长度为1024bit

openssl genrsa -out private.pem 1024

从私钥中提取公钥

openssl rsa -in private.pem -pubout -out public.pem

生成的两个文件

生成明文文件并查看

vi message.txt
cat message.txt
密码:123456

通过公钥进行加密

openssl rsautl -encrypt -in message.txt -inkey public.pem -pubin -out enc.txt

通过私钥进行解密

openssl rsautl -decrypt -in enc.txt -inkey private.pem -out dec.txt