第六百八十五章 RSA算法(密码学) (第1/1页)
时间来到了1976年,两位美国计算机学家威特菲尔德·迪菲(whitfield diffie)和马丁·赫尔曼(martin hellman),首次证明可以在不直接传递密钥的情况下,完成解密。这被称为“diffie-hellman密钥交换算法”。
dh算法的出现有着划时代的意义:从这一刻起,启示人们加密和解密可以使用不同的规则,只要规则之间存在某种对应关系即可。
这种新的模式也被称为“非对称加密算法”:
(1)乙方生成两把密钥,公钥和私钥。公钥是公开的,任何人都可以获得,私钥则是保密的。
(2)甲方获取乙方的公钥,用它对信息加密。
(3)乙方得到加密后的信息,用私钥解密。
公钥加密的信息只有私钥解得开,只要私钥不泄漏,通信就是安全的。
就在dh算法发明后一年,1977年,罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在麻省理工学院一起提出了RSA算法,RSA就是他们三人姓氏开头字母拼在一起组成的。
新诞生的RSA算法特性比dh算法更为强大,因为dh算法仅用于密钥分配,而RSA算法可以进行信息加密,也可以用于数字签名。另外,RSA算法的密钥越长,破解的难度以指数倍增长。
因为其强大的性能,可以毫不夸张地说,只要有计算机网络的地方,就有RSA算法。
RSA算法是这样工作的?
第一步,随机选择两个不相等的质数p和q。
第二步,计算p和q的乘积n。n的长度就是密钥长度,一般以二进制表示,一般长度是2048位。位数越长,则越难破解。
第三步,计算n的欧拉函数φ(n)。
第四步,随机选择一个整数e,其中是1< e <φ(n),且e与φ(n)互质。
第五步,计算e对于φ(n)的模反元素d。所谓“模反元素”就是指有一个整数d,可以使得ed被φ(n)除的余数为1。
第六步,将n和e封装成公钥(n,e),n和d封装成私钥(n,d)。