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

.NET提供的加密算法概述

编程学习2012-10-2741470

  加密数据可以使用对称加密或非对称加密算法,使用对称加密比非对称密钥快得多,但对称密钥需要解决安全交换密钥的问题。在.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
分享给朋友:

相关文章

年纪偏大是否适合学习计算机

年纪偏大是否适合学习计算机

★年纪偏大是否适合学习计算机  Q:我本科不是学计算机专业。但是我对计算机的兴趣很大,想明年考北京大学计算机软件的研究生!请问像我这样快30岁的人了,才开始学习计算机是不是太晚了?  A:中国很多人相信程序员是吃青春饭的。 这主要是由中国软件水平发展的现状决定的。 1、大部分都做的是行业管理方面的软件,从计算机技术上说很快就可以进入。 2、很多公司没有管理和技术双重的提升机制,使得人们觉得做管理比做技术有前途,但是仍...

为什么每个程序员都应该学习C语言

为什么每个程序员都应该学习C语言

为什么每个程序员都应该学习C语言 每个程序员在他们的编程生涯中都应该学习C语言,因为它有太多难以忽视的好处了。除了它会给你提供更多的工作机会之外,C语言还会教给你更多的关于计算机的知识。它能给我们提供的裨益,简单列举如下:   1)相比较其他的编程语言(像C++,JAVA),C语言是个低级语言。从总体上来说,低级的编程语言可以让你更好的了解计算机。   2)设备驱动程序和操作系统只能用C语言来编写。现在,你...

VB连接SQLServer数据库操作代码

VB连接SQLServer数据库操作代码

第一步,在ModConString模块中定义一系列变量'定义一个属性过程反映连接字符串Public Property Get conString() As Variant conString = "data source=.;initial catalog=Sims_four;user End Property'定义一个提供者反映数据库类型Public Property Get conProvide() As Variant co...

计算机蓝屏代码的含义

计算机蓝屏代码的含义

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...

发表评论

访客

看不清,换一张

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