另一种非常著名的加密算法就是 RSA 了,RSA(Rivest-Shamir-Adleman)公钥 加密算
法是 1977 年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿
德曼(Leonard Adleman)一起提出的。时他们三人都在麻省理工学院工作。RSA 就是他
们三人姓氏开头字母拼在一起组成的。
算法是基于大数不可能被质因数分解假设的公钥体系。RSA 算法基于一个十分简单的
数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因
此可以将乘积公开作为加密密钥。简单地说就是找两个很大的质数。一个对外公开的为"公
钥"(Public key) ,另一个不告诉任何人,称为"私钥"(Private key)。这两个密钥是互
补的,也就是说用公钥加密的密文可以用私钥 解密 ,反过来也一样。
RSA 是目前最有影响力的公钥 加密算法 ,它能够抵抗到目前为止已知的绝大多数密码
攻击,已被 ISO 推荐为公钥数据加密标准。是美国国家标准技术研究所发布的国家标准
FIPS PUB 180,最新的标准已经于 2008 年更新到 FIPS PUB 180-3。其中规定了 SHA-
1,SHA-224,SHA-256,SHA-384,和 SHA-512 这几种单向散列算法。SHA-1,SHA-
224 和 SHA-256 适用于长度不超过 2^64 二进制位的消息。SHA-384 和 SHA-512 适用于
长度不超过 2^128 二进制位的消息。
今天只有短的 RSA 钥匙才可能被强力方式解破。到 2008 年为止,世界上还没有任何
可靠的攻击 RSA 算法的方式。只要其钥匙的长度足够长,用 RSA 加密的信息实际上是不
能被解破的。但在分布式计算和量子计算机理论日趋成熟的今天,RSA 加密安全性受到了
挑战。
假设用户甲要寄信给用户乙,他们互相知道对方的公钥。甲就用乙的公钥加密邮件寄
出,乙收到后就可以用自己的私钥 解密 出甲的原文。由于别人不知道乙的私钥,所以即使
是甲本人也无法解密那封信,这就解决了信件保密的问题。另一方面,由于每个人都知道
乙的公钥,他们都可以给乙发信,那么乙怎么确信是不是甲的来信呢?那就要用到基于加
密技术的数字签名了。
甲用自己的私钥将签名内容加密,附加在邮件后,再用乙的公钥将整个邮件加密(注
意这里的次序,如果先加密再签名的话,别人可以将签名去掉后签上自己的签名,从而篡
改了签名)。这样这份密文被乙收到以后,乙用自己的私钥将邮件解密,得到甲的原文和
数字签名,然后用甲的公钥解密签名,这样一来就可以确保两方面的安全了。
散列算法
散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散
列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入
信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。散列还应
该是防冲突的,即找不出具有相同散列结果的两条信息。具有这些特性的散列结果就可以
用于验证信息是否被修改。
单向散列函数一般用于产生消息摘要,密钥加密等,常见的有:
评论10
最新资源