赞
踩
(只讲方法,不讲理论)
有计算机的地方就有密码,有密码的地方就不得不提SRA算法(由发明人Rivest,Shamir,Adleman名字命名)。这是最典型的目前也是应用最广泛的非对称加密算法,遵循余下规则:
a.乙方生成公钥和私钥。公钥是公开的任何人都可以得到,私钥是保密的
b.甲方获取公钥,然后用来对信息加密
c.乙方得到加密后的信息,用私钥解密
欧拉函数:用于解决给定任意整数n,在小于等于n的整数中与n互质数字的个数
如果两个正整数a和n互质,则n的欧拉函数 φ(n) 可以让下面的等式成立:
也就是说,a的φ(n)次方被n除的余数为1。或者说,a的φ(n)次方减去1,可以被n整除
如果两个正整数a和n互质,那么一定可以找到整数b,使得 ab-1 被n整除,或者说ab被n除的余数是1。
这时,b就叫做a的"模反元素"。
第一步,随机选取两个不等的质数p,q。比如61和53(越大越好)
第二步,计算乘积n,n=61*53=3233(n的二进制长度就是密钥的长度,实际情况下,长度通常大于等于1024)
第三步,计算n的欧拉函数φ(n),根据公式φ(n) = (p-1)(q-1)得到结果3120
第四步,随机选取一个1<e<φ(n)并且与φ(n)互质的数字,比如17
第五步,计算e和φ(n)的模反元素d,d=2753
第六步,将n和e封装成公钥(3233,17),n和d成密钥(3233,2753)
实际应用中,公钥和私钥的数据都采用ASN.1格式表达(实例)。
第七步,加密和解密
a.加密
需要用公钥(n,e)
比如需要加密信息m(必须是小于n的整数),假设是65
加密就是直接计算出c,其中me=c(mod n)
这里得到c=2790,将加密结果发送给私钥
b.解密
需要私钥(n,d)
只需要解决cd=m(mod n)可以得到m(这个等式是一定成立的)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。