RSA算法原理
RSA是一种"非对称加密算法"
相关知识
互质关系
如果两个正整数除1以外没有其他公因子,我们就称这两个数互质(coprime)。
比如:15和32,没有公因子,所以它们是互质关系。这说明不是质数也可以构成互质关系。
a*b=c, a和b是c的因子
补充:
质数,指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
公因数(公约数),它是一个能被若干个整数同时均整除的整数。如果一个整数同时是几个整数的约数,称这个整数为它们的“公约数”;公约数中最大的称为最大公约数。对任意的若干个正整数,1总是它们的公因数。
公因子,是一个数学概念,指的是能同时整除几个整数的整数,可以用辗转相除法算出。
加密的原理
公钥(E, N), E:指数, N:模数
公式:
假设公钥为(7, 33), 私钥为(3, 33), 私钥的指数是不公开的, 公私钥的模数会是相同的
假设数据源为:
C, A, O
将C, A, O转换成十进制为:
3, 1, 15
使用公钥的指数进行求幂:
2187 ,1 , 170859375
使用公,私钥的模数进行求余:
得到密文
9, 1, 27
解密的原理
私钥(D, N), D:指数, N:模数
公式:
收到的密文
9, 1, 27
使用私钥的指数进行求幂:
729, 1, 19683
使用私钥的模数求余:
得到原文:
3, 1, 15
公钥和私钥生成的原理
- 选出两个质数
- 质数相乘
- 欧拉函数
- 选出公钥E 质数;1<公钥<T;不是T的因子
- 算私钥D