System.Security.Cryptography中定義的加密算法
這兩天因為要用到一些加解密功能,查了下.net里打包的加密算法,發(fā)現(xiàn)還挺多的,索性全查了一遍寫個筆記,方便以后查找。除了下面這些標(biāo)準(zhǔn)算法以外,還不能漏了一個編碼方式:Base64,大部分加解密需要一起使用。
1、ASN.1
ASN.1(Abstract Syntax Notation One)是ISO和ITU-T的聯(lián)合標(biāo)準(zhǔn),最初是1984年的CCITT X.409:1984的一部分。由于其廣 泛應(yīng)用,1988年ASN.1移到獨立標(biāo)準(zhǔn)X.208,1995年進(jìn)行全面修訂后變成X.680系列標(biāo)準(zhǔn)。
標(biāo)準(zhǔn)的ASN.1編碼規(guī)則有基本編碼規(guī)則(BER,Basic Encoding Rules)、規(guī)范編碼規(guī)則(CER,Canonical Encoding Rules )、唯一編碼規(guī)則(DER,Distinguished Encoding Rules)、壓縮編碼規(guī)則(PER,Packed
Encoding Rules)和XML編碼規(guī)
則(XER,XML Encoding Rules)
2、DES
DES是Data Encryption Standard(數(shù)據(jù)加密標(biāo)準(zhǔn))的縮寫。它是由IBM公司研制的一種加密算法,美國國家標(biāo)準(zhǔn)局于1977年 公布把它作為非機(jī)要部門使用的數(shù)據(jù)加密標(biāo)準(zhǔn)。
DES是一個分組加密算法,他以64位為分組對數(shù)據(jù)加密。同時DES也是一個對稱算法:加密和解密用的是同一個算法。它的密 匙長度是56位(因為每個第8
位都用作奇偶校驗),密匙可以是任意的56位的數(shù),而且可以任意時候改變。其中有極少量的
數(shù)被認(rèn)為是弱密匙,但是很容易避開他們。所以保密性依賴于密鑰。
3、TripleDES
3DES(Triple DES),是基于DES,對一塊數(shù)據(jù)用三個不同的密鑰進(jìn)行三次加密,強度更高。 4、AES/Rijndael
2000 年10月,NIST(美國國家標(biāo)準(zhǔn)和技術(shù)協(xié)會)宣布通過從15種候選算法中選出的一項新的密匙加密標(biāo)準(zhǔn)。Rijndael被選 中成為將來的AES。 Rijndael是在1999年下半年,由研究員Joan Daemen 和 Vincent Rijmen
創(chuàng)建的。美國標(biāo)準(zhǔn)與技術(shù)研究
院(NIST)于2002年5月26日制定了新的高級加密標(biāo)準(zhǔn)(AES)規(guī)范。AES正日益成為加密各種形式的電子數(shù)據(jù)的實際標(biāo)準(zhǔn)。
AES 算法基于排列和置換運算。排列是對數(shù)據(jù)重新進(jìn)行安排,置換是將一個數(shù)據(jù)單元替換為另一個。AES使用幾種不同的方
法來執(zhí)行排列和置換運算。AES是一個迭代的、對稱密鑰分組的密碼,它可以使用128、192和256位密鑰,并且用128位(16
字節(jié))分組加密和解密數(shù)據(jù)。與公共密鑰加密使用密鑰對不同,對稱密鑰密碼使用相同的密鑰加密和解密數(shù)據(jù)。通過分組密
碼返回的加密數(shù)據(jù)的位數(shù)與輸入數(shù)據(jù)相同。迭代加密使用一個循環(huán)結(jié)構(gòu),在該循環(huán)中重復(fù)置換和替換輸入數(shù)據(jù)。
5、RSA
1978年就出現(xiàn)了這種算法,它是第一個既能用于數(shù)據(jù)加密也能用于數(shù)字簽名的算法。它易于理解和操作,也很流行。算法的 名字以發(fā)明者的名字命名:Ron Rivest, AdiShamir 和Leonard
Adleman。但RSA的安全性一直未能得到理論上的證明。
RSA的缺點主要有:A)產(chǎn)生密鑰很麻煩,受到素數(shù)產(chǎn)生技術(shù)的限制,因而難以做到一次一密。B)分組長度太大,為保證安全 性,n 至少也要 600
bits以上,使運算代價很高,尤其是速度較慢,較對稱密碼算法慢幾個數(shù)量級;且隨著大數(shù)分解技術(shù)
的發(fā)展,這個長度還在增加,不利于數(shù)據(jù)格式的標(biāo)準(zhǔn)化。
6、DSA
DSA(Digital Signature Algorithm)是Schnorr和ElGamal簽名算法的變種,被美國NIST作為DSS(DigitalSignature Standard)。
DSA是基于整數(shù)有限域離散對數(shù)難題的,其安全性與RSA相比差不多。DSA的一個重要特點是兩個素數(shù)公開,這樣,當(dāng)使用別 人的p和q時,即使不知道私鑰,你也能確認(rèn)它們是否是隨機(jī)產(chǎn)生的,還是作了手腳。RSA算法卻作不到。
7、MD5
MD5即Message-Digest Algorithm 5(信息-摘要算法5),是一種用于產(chǎn)生數(shù)字簽名的單項散列算法,在1991年由MIT Laboratory for Computer Science(IT計算機(jī)科學(xué)實驗室)和RSA Data Security
Inc(RSA數(shù)據(jù)安全公司)的Ronald L.
Rivest教授開發(fā)出來,經(jīng)由MD2、MD3和MD4發(fā)展而來。MD5算法的使用不需要支付任何版權(quán)費用。它的作用是讓大容量信息在
用數(shù)字簽名軟件簽私人密匙前被"壓縮"成一種保密的格式(將一個任意長度的“字節(jié)串”通過一個不可逆的字符串變換算法
變換成一個128bit的大整數(shù),換句話說就是,即使你看到源程序和算法描述,也無法將一個MD5的值變換回原始的字符串,
從數(shù)學(xué)原理上說,是因為原始的字符串有無窮多個,這有點象不存在反函數(shù)的數(shù)學(xué)函數(shù)。)
8、SHA-1
SHA-1算法由美國國家標(biāo)準(zhǔn)和技術(shù)協(xié)會(NIST)與美國國家安全局(NSA)設(shè)計,并且被美國政府采納,成為美國國家標(biāo)準(zhǔn)。
事實上SHA-1目前是全世界使用最為廣泛的哈希算法,已經(jīng)成為業(yè)界的事實標(biāo)準(zhǔn)??梢詫﹂L度不超過2^64比特的消息進(jìn)行計
算,輸入以512位數(shù)據(jù)塊為單位處理,產(chǎn)生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 位加密哈希函數(shù)。它旨在用于替代 128 位哈希函數(shù) MD4、MD5 和 RIPEMD。RIPEMD 是在 EU 項目 RIPE(RACE Integrity Primitives
Evaluation,1988-1992)的框架中開發(fā)的。
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.
|
|