.NET提供的加密算法概述
加密數(shù)據(jù)可以使用對(duì)稱(chēng)加密或非對(duì)稱(chēng)加密算法,使用對(duì)稱(chēng)加密比非對(duì)稱(chēng)密鑰快得多,但對(duì)稱(chēng)密鑰需要解決安全交換密鑰的問(wèn)題。在.NET Framework中,可以使用System.Security.Cryptography命名空間中的類(lèi)來(lái)加密。它實(shí)現(xiàn)了幾個(gè)對(duì)稱(chēng)和非對(duì)稱(chēng)算法。從.NET 3.4開(kāi)始,一些新類(lèi)以Cng作為前綴或后綴,表示Cryptography Next Generation,用于采用Windows NT 6.0或更高內(nèi)核版本的操作系統(tǒng)(Vista、Win7、Win2008、Win8)。這個(gè)API可以使用基于提供程序的模型,編寫(xiě)?yīng)毩⒂谒惴ǖ某绦颉?/p>
下面列出System.Security.Cryptography命名空間中的加密類(lèi)及其功能。沒(méi)有Cng、Managed或 CryptoServiceProvider后綴的類(lèi)是抽象基類(lèi),例如MD5。Managed后綴表示這個(gè)算法用托管代碼實(shí)現(xiàn),其他類(lèi)可能封裝了內(nèi)部的 Windows API調(diào)用。CryptoServiceProvider后綴用于實(shí)現(xiàn)了抽象基類(lèi)的類(lèi),Cng后綴用于利用新Cryptography CNG API的類(lèi),它只能用于指定版本的操作系統(tǒng)。
類(lèi)別 | 類(lèi) | 說(shuō)明 |
散
列 |
MD5, MD5Cng SHA1, SHA1Managed, SHA1Cng SHA256, SHA256Managed, SHA256Cng SHA384, SHA384Managed, SHA384Cng SHA512, SHA512Managed, SHA512Cng |
散列算法的目標(biāo)是從任意長(zhǎng)度的二進(jìn)制字符串中創(chuàng)建一個(gè)長(zhǎng)度固定的散列值。這些算法和數(shù)字簽名一起用于保證數(shù)據(jù)的完整性。如果再次散列相同的二進(jìn)制字符串,會(huì)返回相同的散列結(jié)果。MD5(Message Digest Algorithm 5)是由RSA實(shí)驗(yàn)室開(kāi)發(fā)的,比SHA1快。SHA1在抵御暴力攻擊方面比較強(qiáng)大。SHA算法是由美國(guó)國(guó)家安全局(NSA)設(shè)計(jì)的。MD5使用128位的散列值,SHA1使用160位。其它SHA算法在其名稱(chēng)中包含了散列長(zhǎng)度。SHA512是這些算法中最強(qiáng)大的,其散列長(zhǎng)度為512位,也是最慢的 |
對(duì)
稱(chēng) |
DES, DESCryptoServiceProvider TripleDES, TripleDESCryptoServiceProvider AES, AESCryptoServiceProvider, AESManaged RC2, RC2CryptoServiceProvider Rijandel, RijandelManaged |
對(duì)稱(chēng)密鑰算法使用相同的密鑰進(jìn)行數(shù)據(jù)的加密和解密。現(xiàn)在認(rèn)為DES(Data Encryption Standard)是不安全的,因?yàn)樗皇褂?6位的密鑰,可以在不超過(guò)24小時(shí)的時(shí)間內(nèi)破解。Triple DES是DES的繼任者,其密鑰長(zhǎng)度是168位,但它提供的有效安全性只有112位。AES(Advanced Encrytion Standard)是美國(guó)政府采用的加密標(biāo)準(zhǔn),其密鑰長(zhǎng)度是128、192或256位。Rijandel非常類(lèi)似于AES,只是在密鑰長(zhǎng)度方面的選項(xiàng)較多。 |
非 對(duì) 稱(chēng) |
DSA, DSACryptoServiceProvider ECDsa, ECDsaCng ECDiffieHellman, ECDiffieHellmanCng RSA, RSACryptoServiceProvider |
非對(duì)稱(chēng)算法使用不同的密鑰進(jìn)行加密和解密。RSA(Rivest, Shamir, Adleman)是第一個(gè)用于簽名和加密的算法。這個(gè)算法廣泛用于電子商務(wù)協(xié)議。DSA(Digital Signature Algorithm)是美國(guó)聯(lián)邦數(shù)字簽名的政府標(biāo)準(zhǔn)。ECDsa(Elliptic Curve DSA)和ECDiffieHellman使用基于橢圓曲線組的算法。這些算法比較安全,且使用較短的密鑰長(zhǎng)度。例如,DSA的密鑰長(zhǎng)度為1024位,其安全性類(lèi)似于160位的ECDsa。因此,ECDsa比較快。ECDiffieHellman算法用于以安全的方式在公共信道中互換私鑰。 |
補(bǔ)充一下吧,關(guān)于性能方面,就同一種算法,有CryptoServiceProvider、Managed、Cng三種實(shí)現(xiàn)方式,我現(xiàn)在測(cè)試了散列中的方法,其中MD5是沒(méi)有Managed實(shí)現(xiàn)的,計(jì)算“Test”字符串的散列值10萬(wàn)次:
可以看出。Cng算法的速度是最差的,而Csp居中水平,Managed實(shí)現(xiàn)則速度非常快,另外,如果加大SHA算法的位數(shù)的話,當(dāng)?shù)?84位時(shí)差別就不再明顯,而且Csp算法所需時(shí)間成為了最少的方式,這個(gè)我認(rèn)為是操作系統(tǒng)API調(diào)用所形成的優(yōu)勢(shì):
原文鏈接:http://www.cnblogs.com/lekko/archive/2012/09/11/2680288.html