当前位置:首页 > 编程学习 > .NET提供的加密算法概述

.NET提供的加密算法概述

编程学习2012-10-2735620

  加密数据可以使用对称加密或非对称加密算法,使用对称加密比非对称密钥快得多,但对称密钥需要解决安全交换密钥的问题。在.NET Framework中,可以使用System.Security.Cryptography命名空间中的类来加密。它实现了几个对称和非对称算法。从.NET 3.4开始,一些新类以Cng作为前缀或后缀,表示Cryptography Next Generation,用于采用Windows NT 6.0或更高内核版本的操作系统(Vista、Win7、Win2008、Win8)。这个API可以使用基于提供程序的模型,编写独立于算法的程序。

  下面列出System.Security.Cryptography命名空间中的加密类及其功能。没有Cng、Managed或CryptoServiceProvider后缀的类是抽象基类,例如MD5。Managed后缀表示这个算法用托管代码实现,其他类可能封装了内部的Windows API调用。CryptoServiceProvider后缀用于实现了抽象基类的类,Cng后缀用于利用新Cryptography CNG API的类,它只能用于指定版本的操作系统。

 

类别 说明

 

MD5, MD5Cng

SHA1, SHA1Managed, SHA1Cng

SHA256, SHA256Managed, SHA256Cng

SHA384, SHA384Managed, SHA384Cng

SHA512, SHA512Managed, SHA512Cng

散列算法的目标是从任意长度的二进制字符串中创建一个长度固定的散列值。这些算法和数字签名一起用于保证数据的完整性。如果再次散列相同的二进制字符串,会返回相同的散列结果。MD5(Message Digest Algorithm 5)是由RSA实验室开发的,比SHA1快。SHA1在抵御暴力攻击方面比较强大。SHA算法是由美国国家安全局(NSA)设计的。MD5使用128位的散列值,SHA1使用160位。其它SHA算法在其名称中包含了散列长度。SHA512是这些算法中最强大的,其散列长度为512位,也是最慢的

 

DES, DESCryptoServiceProvider

TripleDES, TripleDESCryptoServiceProvider

AES, AESCryptoServiceProvider, AESManaged

RC2, RC2CryptoServiceProvider

Rijandel, RijandelManaged

对称密钥算法使用相同的密钥进行数据的加密和解密。现在认为DES(Data Encryption Standard)是不安全的,因为它只使用56位的密钥,可以在不超过24小时的时间内破解。Triple DES是DES的继任者,其密钥长度是168位,但它提供的有效安全性只有112位。AES(Advanced Encrytion Standard)是美国政府采用的加密标准,其密钥长度是128、192或256位。Rijandel非常类似于AES,只是在密钥长度方面的选项较多。

DSA, DSACryptoServiceProvider

ECDsa, ECDsaCng

ECDiffieHellman, ECDiffieHellmanCng

RSA, RSACryptoServiceProvider

非对称算法使用不同的密钥进行加密和解密。RSA(Rivest, Shamir, Adleman)是第一个用于签名和加密的算法。这个算法广泛用于电子商务协议。DSA(Digital Signature Algorithm)是美国联邦数字签名的政府标准。ECDsa(Elliptic Curve DSA)和ECDiffieHellman使用基于椭圆曲线组的算法。这些算法比较安全,且使用较短的密钥长度。例如,DSA的密钥长度为1024位,其安全性类似于160位的ECDsa。因此,ECDsa比较快。ECDiffieHellman算法用于以安全的方式在公共信道中互换私钥。

 

  补充一下吧,关于性能方面,就同一种算法,有CryptoServiceProvider、Managed、Cng三种实现方式,我现在测试了散列中的方法,其中MD5是没有Managed实现的,计算“Test”字符串的散列值10万次:

 

.NET提供的加密算法概述  编程 .NET 第1张

 

  可以看出。Cng算法的速度是最差的,而Csp居中水平,Managed实现则速度非常快,另外,如果加大SHA算法的位数的话,当到384位时差别就不再明显,而且Csp算法所需时间成为了最少的方式,这个我认为是操作系统API调用所形成的优势:  

 

.NET提供的加密算法概述  编程 .NET 第2张

 

原文链接:http://www.cnblogs.com/lekko/archive/2012/09/11/2680288.html

 

扫描二维码推送至手机访问。

版权声明:本文由海阔天空发布,如需转载请注明出处。

本文链接:https://www.apull.net/html/20121027421.html

标签: 编程.NET
分享给朋友:

相关文章

VB/VB.net 只允许运行一个实例

VB/VB.net 只允许运行一个实例

VB/VB.net  只允许运行一个实例       by:  Apull  VB中的实现方法VB如何防止程序被重复加载,也就是只允许运行一个实例,一般有2种方法。一,直接用VB提供的APP对象的PrevInstance方法。PrevInstance的返回值为True则说明已经有一个实力在运行。If App.PrevInstance Then Msgbox "已经有一个实例在运行" End if这个...

用VB类实现文件对话框

用VB类实现文件对话框

用VB类实现文件对话框'类名:ComDlg.cls '作用:文件打开保存对话框 ' ' ' 'By:Apull '2007-5-21 'http://www.apull.net Option Explicit Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" ( _ pOpenfil...

计算机蓝屏代码的含义

计算机蓝屏代码的含义

0 0x0000 作业完成。1 0x0001 不正确的函数。2 0x0002 系统找不到指定的档案。3 0x0003 系统找不到指定的路径。4 0x0004 系统无法开启档案。5 0x0005 拒绝存取。6 0x0006 无效的代码。7 0x0007 储存体控制区块已毁。8 0x0008 储存体空间不足,无法处理这个指令。9 0x0009 储存体控制区块地址无效。10 0x000A 环境不正确。11 0x000B 尝试加载一个格式错误的程序。12 0x000C 存取码错误。1...

ASP错误提示大全

ASP错误提示大全

Microsoft VBScript 语法错误(0×800A03E9)–>内存不足Microsoft VBScript 语法错误(0×800A03EA)–>语法错误Microsoft VBScript 语法错误(0×800A03EB)–>缺少’:’Microsoft VBScript 语法错误(0×800A03ED)–>缺少’(’Mi...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。