代码改变世界

[整理]对称和非对称加密算法

2014-06-19 18:03  Benoly  阅读(363)  评论(0编辑  收藏  举报

1.DES
DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准( Data Encryption Standard),1977年美国国家标准局公布的IBM公司研制的一种数据加密算法:数据加密标准。

2.AES
AES加密算法即密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院 (NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。

AES的基本要求是,采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。

.Net中提供了RijndaelManaged类

3.RSA
RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。
在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然秘密密钥

SK是由公开密钥PK决定的,但却不能根据PK计算出SK。

   RSA算法非常简单,概述如下:
  找两素数p和q
  取n=p*q  如:n=3*7=21
  取t=(p-1)*(q-1) 如:t = 2*6 = 12
    取任何一个数e,要求满足e
  取d*e%t==1  如:d=7,e=7,则7*7/12刚好等于1满足要求
  这样最终得到三个数: n d e,即 n=21,d=7,e=7
  设消息为数M
  设c=(M**d)%n就得到了加密后的消息c
  设m=(c**e)%n则 m == M,从而完成对c的解密。
  注:**表示次方,上面两式中的d和e可以互换。
 
  在对称加密中:
  n d两个数构成公钥,可以告诉别人;
  n e两个数构成私钥,e自己保留,不让任何人知道。
  给别人发送的信息使用e加密,只要别人能用d解开就证明信息是由你发送的,构成了签名机制。
  别人给你发送信息时使用d加密,这样只有拥有e的你能够对其解密。
  rsa的安全性在于对于一个大数n,没有有效的方法能够将其分解从而在已知n d的情况无法获得e;同样在已知n e的情况下无法求得d。


参考:
http://baike.baidu.com/view/878529.htm?from_id=210508&type=syn&fromtitle=DES&fr=aladdin
http://baike.baidu.com/subview/133041/5358738.htm?fromtitle=aes%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95&fromid=3233272&type=syn
http://baike.baidu.com/view/10613.htm?from_id=210678&type=syn&fromtitle=RSA&fr=aladdin
http://blog.csdn.net/starryheavens/article/details/8536238
http://www.cnblogs.com/happinessCodes/archive/2010/08/02/1790697.html