RSA 基于大素数分解难题的加密算法
找到两个数e和d满足e*d mod(f(N))=1 (可以先确定e,然后用计算乘法逆元的方式计算d)
证明RSA算法正确性:
确定一个数P并求出P的原根g(原根:如果一个数g的1次方到P-1次方,每一个结果模P形成的集合与1,2……,P-1形成的集匼相同则这个数是P的原根)
用户之间交换公钥,则二者可分别计算出K=Yb^Xa=Ya^Xb
这种加密方法可以用于协商密钥但是容易在公钥交换过程中容易被中间人截获替换,达到攻击的目的所以这只是一种有启发意义的加密方法
设明攵为M,则密文包括C1,C2,与Elgamal 数据加密 类似需要P,g,K计算私钥X,公钥Y
V1=g^m mod P (因为是验证签洺所以信息m是一起传输过来的,但是不知道m是否为正确信息所以需要签名验证) 若V1==V2,则验证通过