导航

System.Security.Cryptography中定义的加密算法

Posted on 2009-05-06 11:55  Phil Wang  阅读(539)  评论(0编辑  收藏  举报
System.Security.Cryptography中定义的加密算法
这两天因为要用到一些加解密功能,查了下.net里打包的加密算法,发现还挺多的,索性全查了一遍写个笔记,方便以后查找。除了下面这些标准算法以外,还不能漏了一个编码方式:Base64,大部分加解密需要一起使用。
?
1、ASN.1
ASN.1(Abstract Syntax Notation One)是ISO和ITU-T的联合标准,最初是1984年的CCITT X.409:1984的一部分。由于其广
泛应用,1988年ASN.1移到独立标准X.208,1995年进行全面修订后变成X.680系列标准。
标准的ASN.1编码规则有基本编码规则(BER,Basic Encoding Rules)、规范编码规则(CER,Canonical Encoding Rules
)、唯一编码规则(DER,Distinguished Encoding Rules)、压缩编码规则(PER,Packed Encoding Rules)和XML编码规
则(XER,XML Encoding Rules)
?
2、DES
DES是Data Encryption Standard(数据加密标准)的缩写。它是由IBM公司研制的一种加密算法,美国国家标准局于1977年
公布把它作为非机要部门使用的数据加密标准。
DES是一个分组加密算法,他以64位为分组对数据加密。同时DES也是一个对称算法:加密和解密用的是同一个算法。它的密
匙长度是56位(因为每个第8 位都用作奇偶校验),密匙可以是任意的56位的数,而且可以任意时候改变。其中有极少量的
数被认为是弱密匙,但是很容易避开他们。所以保密性依赖于密钥。
?
3、TripleDES
3DES(Triple DES),是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
?
4、AES/Rijndael
2000 年10月,NIST(美国国家标准和技术协会)宣布通过从15种候选算法中选出的一项新的密匙加密标准。Rijndael被选
中成为将来的AES。 Rijndael是在1999年下半年,由研究员Joan Daemen 和 Vincent Rijmen 创建的。美国标准与技术研究
院(NIST)于2002年5月26日制定了新的高级加密标准(AES)规范。AES正日益成为加密各种形式的电子数据的实际标准。
AES 算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES使用几种不同的方
法来执行排列和置换运算。AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥,并且用128位(16
字节)分组加密和解密数据。与公共密钥加密使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密
码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据。
?
5、RSA
1978年就出现了这种算法,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的
名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。
RSA的缺点主要有:A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。B)分组长度太大,为保证安全
性,n 至少也要 600 bits以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术
的发展,这个长度还在增加,不利于数据格式的标准化。
?
6、DSA
DSA(Digital Signature Algorithm)是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(DigitalSignature
Standard)。
DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多。DSA的一个重要特点是两个素数公开,这样,当使用别
人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。RSA算法却作不到。
?
7、MD5
MD5即Message-Digest Algorithm 5(信息-摘要算法5),是一种用于产生数字签名的单项散列算法,在1991年由MIT
Laboratory for Computer Science(IT计算机科学实验室)和RSA Data Security Inc(RSA数据安全公司)的Ronald L.
Rivest教授开发出来,经由MD2、MD3和MD4发展而来。MD5算法的使用不需要支付任何版权费用。它的作用是让大容量信息在
用数字签名软件签私人密匙前被"压缩"成一种保密的格式(将一个任意长度的“字节串”通过一个不可逆的字符串变换算法
变换成一个128bit的大整数,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,
从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。)
?
8、SHA-1
SHA-1算法由美国国家标准和技术协会(NIST)与美国国家安全局(NSA)设计,并且被美国政府采纳,成为美国国家标准。
事实上SHA-1目前是全世界使用最为广泛的哈希算法,已经成为业界的事实标准。可以对长度不超过2^64比特的消息进行计
算,输入以512位数据块为单位处理,产生160比特的消息摘要作为输出。
?
9、RIPEMD160
RIPEMD-160 is a 160-bit cryptographic hash function, designed by Hans Dobbertin, Antoon Bosselaers, and Bart
Preneel. It is intended to be used as a secure replacement for the 128-bit hash functions MD4, MD5, and
RIPEMD. MD4 and MD5 were developed by Ron Rivest for RSA Data Security, while RIPEMD was developed in the
framework of the EU project RIPE (RACE Integrity Primitives Evaluation, 1988-1992).
RIPEMD-160 是一个 160 位加密哈希函数。它旨在用于替代 128 位哈希函数 MD4、MD5 和 RIPEMD。RIPEMD 是在 EU 项目
RIPE(RACE Integrity Primitives Evaluation,1988-1992)的框架中开发的。
?
10、SHA-256/384/512
哈希值大小为分别256/384/512位。
?
11、RC2
RC2 is a variable key-size block cipher designed by Ronald Rivest for RSA Data Security (now RSA Security).
"RC" stands for "Ron's Code" or "Rivest's Cipher." It is faster than DES and is designed as a "drop-in"
replacement for DES (see Section 3.2). It can be made more secure or less secure than DES against exhaustive
key search by using appropriate key sizes. It has a block size of 64 bits and is about two to three times
faster than DES in software. An additional string (40 to 88 bits long) called a salt can be used to thwart
attackers who try to precompute a large look-up table of possible encryptions. The salt is appended to the
encryption key, and this lengthened key is used to encrypt the message. The salt is then sent, unencrypted,
with the message. RC2 and RC4 have been widely used by developers who want to export their products; more
stringent conditions have been applied to DES exports.
?
12、RC4
RC4 is a stream cipher designed by Rivest for RSA Data Security (now RSA Security). It is a variable key-
size stream cipher with byte-oriented operations. The algorithm is based on the use of a random permutation.
Analysis shows that the period of the cipher is overwhelmingly likely to be greater than 10100. Eight to
sixteen machine operations are required per output byte, and the cipher can be expected to run very quickly
in software. Independent analysts have scrutinized the algorithm and it is considered secure.