1.对于RSA加密的理解:它是一种非对称的加密方式,就是加密密钥和解密密钥不同,加密密钥是可以公开的,是公钥;解密密钥不能公开,是私钥。
2.对于对称加密和非对称加密的理解
对称加密
非对称加密
另外RSA算法的安全性基于两个我觉得比较难得数学问题:质因数分解和求离散对数。
3.加密的原理:两个大的质数很容易相乘,但想要对它们的乘积进行因式分解却非常困难,因此在加密算法中他将两个大质数的乘积积公开作为加密密钥,即公钥;而两个大质数组合起来形成私钥。
4.如何形成密钥对(个人觉得比较难理解,它还使用了欧拉函数的原理,并且它在平时解题中出现大多伴随着脚本,即要编写脚本来解密,对编程的掌握要有一定要求)
(1)首先需要生成公钥和私钥的一部分 “M”
取两个互为质数的数p和q,条件(p!=q, gcd(p,q)=1)
要使得 M=p*q
注:gcd(p,q)=1的意思是p和q的最大公因数为1
(2)需要生成一个不大于M又要与M互质,并且是p-1和q-1的最小公倍数。(此处就是运用了欧拉函数)这里我先用N来表示,即
N = [p-1,q-1] = (p-1)(q-1)
据了解:
互质数p 和 q不能太小,如果他们足够大,那么根据目前的计算机技术和其他工具,至今也没能从M中分解出p 和q 。也就是说,只要密钥长度M足够大(1024足够),基本上不可能从公钥信息推出私钥信息
(3)生成加密密钥 ( 这里用Q来表示)
需要满足 1 <Q<N, gcd(N,Q)=1
这里保证了第4步生成解密密钥L时一定有L满足条件
(4)生成解密密钥L
需要满足 1<L<Q , (Q*L)modN=1
(Q*L)modN=1 就是 Q*L的值除以M的余数等于1 的意思
加密时 ciphertext(密文)=plaintext的Q次方的值除于M的余数
解密时 plaintext(明文) =ciphertext的L次方的值除于M的余数
最后生成的密钥对就为 (Q,L,M)
5. 实操
打开后发现它只给了两个非常大并且互质的两个数p和q,给了加密密钥e,要求解出解密密钥d
这里就需要用脚本辅助计算出d的值
、
这里是一个python脚本,将pqe的值带入脚本即可解出d值
个人觉得这个题应该是rsa中比较简单的,但是想要编写出脚本还需要对rsa编码的深刻理解和对编程的灵活掌握,现在的我还远远达不到(这里用到的脚本也是网上找的),任需不断努力, 加油!!!
入门学习,如有理解错误的地方还请大家指正。