欧拉函数的应用-RSA加密算法
若p和q互质,令n = p*q 则ola(n) = (p-1)*(q-1) 我们知道p和q的值能轻易知道(p-1)*(q-1)的值也就是ola函数的值,但是仅仅知道n是多少,却非常难得到p和q是多少,因为当n很大时,例如有几百位时,它就有非常多的质因数,要暴力穷举很长时间。所以这就保证了RSA加密算法的可靠性。 RSA加密是非对称加密,密钥 由公钥和私钥组成。 公式为: (明文)^e % n = 密文 其中, e 是一个小于n且与n互质的数。 (密文)^d % n = 明文 d = ( 1 + k*ola(n) ) / e (在此处, k和d都必须是正整数。) 将明文的e次方对n取余后得到密文。 将密文的d次方对n取余后得到明文。 所以 加密用公钥(e, n) 解密用私钥(d, n) 你构造出一个密钥对之后,将公钥发给别人,别人通过公钥加密,在发送给你,你在用公钥解密,就完成了明文加密传输。 所以我们首先要构造两个质数p和q 则 n = p*q ola(n) =(p-1)* (q-1) 然后随机构造一个小于n并且与n互质的数 e。 得到 e n ola(n) 之后 就剩下d了 d = ( 1 + k*ola(n) ) / e 因为d和k一定是正整数 所以我们可以从1开始枚举k,直到求出的d是一个正整数。 或者是将等式变化为 d*e - k*ola(n) = 1 由扩展欧几里得求解d