.NET平台开源项目速览(12)哈希算法集合类库HashLib

news/2024/7/5 6:56:09

    .NET的System.Security.Cryptography命名空间本身是提供加密服务,散列函数,对称与非对称加密算法等功能。实际上,大部分情况下已经满足了需求,而且.NET实现的都是目前国际上比较权威的,标准化的算法,所以还是安全可靠的。但也有一些场合,需要自己实现一些安全散列算法。不仅仅是学习,也可以进行测试以及相关研究。而今天要介绍的正式这样一个包括了目前几乎所有散列函数算法实现的.NET开源组件,大家可以实际使用,查看或者修改等。满足更多不同人,不同层次的需求。那就看看相关基础知识以及组件的介绍。

NET开源目录:【目录】本博客其他.NET开源项目文章目录

本文原文地址:.NET平台开源项目速览(11)KwCombinatorics排列组合使用案例(1)

1.哈希算法介绍

    哈希函数,也就是通常所说的散列函数,常用的就是MD5,SHA了。哈希函数的作用就是相当于“指纹”,它是不可逆的,可以没有密钥,也可以有密钥。给定一个任意长度的消息M,都可以产生固定长度的散列值m。

    散列函数必须满足的特性就是:计算M的散列值要快,反之则是相当困难的,且找到2个具有相同散列值的消息是困难的。一般用于防止篡改,比如很多大型的软件下载的时候,都会在网站公布文件的散列值,下载后就可以根据工具计算其散列值对比,看文件是否正确或者遭到修改。

    哈希完全不等于加密,很多时候开发人员都对用户表中的密码进行哈希后保存,实际上不叫做加密,只是相当于把密码的“特征指纹”保存下来,而对非法攻击者来说,在不知道真实的“密码”的情况下,得到有相同指纹的密码是极为困难的。

    例如我们在微软官方下载文件的时候,会提供一个哈希验证码,目的就是让你下载后,进行校验,防止文件被修改。确保你下载到的文件是合法以及官方版本。

2.HashLib功能介绍

    这里可以找到大量的哈希算法的C#实现。包括SHA3以及候选算法。你可以使用它来对文件,数据流以及常用的数据类型进行哈希验证。支持的算法有: 

1.非加密的32位哈希算法:AP, BKDR, Bernstein, Bernstein1, DEK, DJB, ELF, FNV, FNV1a, JS, Jenkins3, Murmur2, Murmur3, OneAtTime, PJW, RS, Rotating, SDBM, ShiftAndXor, SuperFast

2.非加密的64位哈希算法:FNV, FNV1a, Murmur2, SipHash

3.非加密的128位哈希算法:Murmur3

4.校验和算法:Adler32, CRC32, CRC64

5.所有的算法都基于System.Security.Cryptography命名空间:MD5, RIPEMD160, SHA1, SHA256, SHA384, SHA512

6.加密算法:GOST, Grindahl, HAS160, Haval, MD2, MD4, MD5, Panama, RadioGatun, RIPEMD, RIPEMD128, RIPEMD160, RIPEMD256, RIPEMD320, SHA0, SHA1, SHA224, SHA256, SHA384, SHA512, Snefru, Tiger, Tiger2, Whirlpool

7.SHA3及SHA2候选算法:Blake, BlueMidnightWish, CubeHash, Echo, Fugue, Groestl, Hamsi, JH, Keccak, Luffa, Shabal, SHAvite3, SIMD, Skein

    官方网站:http://hashlib.codeplex.com/

    使用比较简单,参考官方例子即可。

 

转载于:https://www.cnblogs.com/asxinyu/p/dotnet_Opensource_project_HashLib.html


http://www.niftyadmin.cn/n/4308586.html

相关文章

BZOJ 1004 【HNOI2008】 Cards

题目链接:Cards 听说这道题是染色问题的入门题,于是就去学了一下\(Burnside\)引理和\(P\acute{o}lya\)定理(其实还是没有懂),回来写这道题。 由于题目中保证"任意多次洗牌都可用这\(m\)种洗牌法中的一种代替",于是有了封…

.NET平台开源项目速览(13)机器学习组件Accord.NET框架功能介绍

Accord.NET Framework是在AForge.NET项目的基础上封装和进一步开发而来。因为AForge.NET更注重与一些底层和广度,而Accord.NET Framework更注重与机器学习算法以及提供计算机视频、音频、信号处理以及统计应用相关的解决方案。该项目使用C#语言编写,项目…

Node.js 自学之旅(初稿篇)

学习基础,JQuery 原生JS有一定基础,有自己一定技术认知(ps:原型链依然迷糊中.闭包6不起来!哎!) 当然最好有语言基础,C#,java,PHP等等.. 最初学习这个东西的原因很简单,在园子里面看到一篇关于node编写的小爬虫 的文章,没想到这个可以做一些服务自己的东西而不是公司那些服务用户…

C语言 · 回文数 · 基础练习

问题描述1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。输出格式按从小到大的顺序输出满足条件的四位十进制数。代码如下:注意:这里要提醒一下读者:蓝桥杯都是在线提交&#xf…

python PIL比较图片像素

1 # -*- coding: utf-8 -*-2 3 from PIL import Image4 from pylab import *5 6 def compare_pic_L(pic1,pic2):7 #打开第一张图片8 im1 Image.open(pic1).convert(L)9 print im1.format ,im1.size, im1.mode 10 11 #像素值转数组 12 aim1 np.trans…

【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法...

若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点。感觉也是生物智能的一个体现,和遗传算法、神经网络有异曲同工之妙。只不过当时没有实际需求学习,所以没去研究。最近有一个…

《DSP using MATLAB》示例Example6.1

今天是2016年最后一天了,看到其他博友都写年终总结,做了这个,做了那个,收获满满,再看看自己, 恍恍惚惚一年,不知道干了些什么,惭愧。刚才接到老妈远方的电话,弟弟就在一小…

【结果很简单,过程很艰辛】记阿里云Ons消息队列服务.NET接口填坑过程

Maybe 这个问题很简单,因为解决方法是非常简单,但填坑过程会把人逼疯,在阿里云ONS工作人员、同事和朋友的协助下,经过一天的调试和瞎捣鼓,终于解决了这个坑,把问题记下来,也许更多人在碰到类似问…