宝哥软件园

中加密算法总结的详细说明 NET(继续使用用户定义的加密助手类)

编辑:宝哥软件园 来源:互联网 时间:2021-09-06

1.1.1总结

相信很多人都用过。NET,而且我们必须了解每种加密算法的特点(对称性或非对称性、密钥长度和初始化向量等)。)在使用过程中。我也看到很多人在写加密算法的总结。NET,但我发现有些个人存在一些问题。很多人喜欢列出每种加密算法的具体实现。假设我们要求实现AES和Triple DES加密算法,我们真的可以分别给出它们的具体实现。

我们真的有必要给出每个加密算法的具体实现吗?此外,这种设计不符合面向对象的设计思想。最重要的是维护多种加密算法!好了,让我们实现一个可扩展和可维护的加密算法,Helper。

1.1.2主体

图1哈希加密算法的继承级别

从上面的继承级别,我们可以知道中提供了七种Hash加密算法。NET,所有这些都继承自抽象类HashAlgorithm,我们经常使用MD5、SHA1和SHA256加密算法。我们将在下面给出MD5和SHA1的实现。

图2对称加密算法的继承层次

从上面的继承级别,我们可以知道中提供了五种对称加密算法。NET,所有这些都继承自抽象类SymmetricAlgorithm。我们将在下面给出它们的一般实现。

图3非对称加密算法的继承层次

从上面的继承级别,我们可以知道中提供了四种非对称加密算法。NET,所有这些都继承自抽象类不对称算法。我们将在下面给出RSA实施。

除了上述加密算法外,NET还提供了许多其他类型的加密。这里我们主要介绍一些常用的加密算法。如果你想知道,你可以参考MSDN。好了,我们来给出Hash加密算法的实现。

哈希加密算法

在给出具体的算法实现之前,让我们回想一下什么是Hash加密算法。

哈希加密就是利用哈希函数对待加密的信息进行加密,然后生成相应的哈希值,所以我们可以定义一个Hash()函数,将待加密的信息m和加密后的哈希值h。

我们可以通过散列信息m1和m2来获得相应的散列值(m1)和(m2)。

如果信息m1=m2,那么将获得相同的散列地址,但是信息m1!=m2也可能得到相同的哈希地址,那么就会发生哈希冲突。一般来说,哈希冲突只能尽可能减少,但不能完全避免。当哈希冲突发生时,我们应该使用冲突解决方法,主要的冲突解决方法有开放地址法、重新哈希法、链地址法和建立公共溢出区。

图4哈希加密过程(图片来源wiki)

现在让我们实现通用散列加密方法。

///摘要///加密指定的哈希算法。///1.为提供的文本数据生成加密哈希密钥。////summary////param name=' hashAlgorithm '哈希算法。/param///param name='dataToHash '要哈希的数据。/param///返回/returnspublic静态字符串Encrypt(HashAlgorithm HashAlgorithm,string dataToHash){ var tabStringHex=new string[16];新系统。text . utf8 encoding();byte[]数据=UTF8。GetBytes(DataToHash);byte[]结果=hashAlgorithm。ComputeHash(数据);var hexResult=new StringBuilder(结果。长度);for(int I=0;我的结果。长度;i ) { ////转换为十六进制hexResult。追加(结果[i]。ToString(' X2 ');}返回hexResult。ToString();}上述加密方法包含HashAlgorithm类型的参数。我们可以通过具体的HashAlgorithm (MD5、SHA1和SHA256等。)继承自抽象类hashalgorithm,我们可以通过继承多态性对其进行加密

更多资讯
游戏推荐
更多+