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

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

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

 

时间: 2024-08-19 20:58:55

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

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

    Accord.NET Framework是在AForge.NET项目的基础上封装和进一步开发而来.因为AForge.NET更注重与一些底层和广度,而Accord.NET Framework更注重与机器学习算法以及提供计算机视频.音频.信号处理以及统计应用相关的解决方案.该项目使用C#语言编写,项目主页:http://accord-framework.net/     说明:该文章只是一个基本介绍,主要内容是翻译的官方文档和介绍,部分英文表述个人能力有限,不太熟悉,所以直接照搬原文,有比较

.NET平台开源项目速览(7)关于NoSQL数据库LiteDB的分页查询解决过程

原文:.NET平台开源项目速览(7)关于NoSQL数据库LiteDB的分页查询解决过程 在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑) 与 .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB中,介绍了LiteDB的基本使用情况以及部分技术细节,我还没有在实际系统中大量使用,但文章发布后,有不少网友( loogn)反应在实际项目中使用过,效果还可以吧.同时也有人碰到了关于LiteDB关于分页的问题,还不止一个网友,很显然这个问题从我的思考上来

.NET平台开源项目速览(11)KwCombinatorics排列组合使用案例(1)

    今年上半年,我在KwCombinatorics系列文章中,重点介绍了KwCombinatorics组件的使用情况,其实这个组件我5年前就开始用了,非常方便,麻雀虽小五脏俱全.所以一直非常喜欢,才写了几篇文章推荐给大家.最近在计算足球彩票结果组合过程中,使用的到了其功能,生成排列,非常具有代表性,而且也有网友咨询过类似的问题,所以就封装为扩展方法,方便调用.         NET开源目录:[目录]本博客其他.NET开源项目文章目录 彩票数据资料目录:[目录]C#搭建足球赛事资料库与预测平

.NET平台开源项目速览(5)深入使用与扩展SharpConfig组件

上个月在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧  和 .NET平台开源项目速览(1)SharpConfig配置文件读写组件 中都提到了SharpConfig组件,简单轻量级,速度快,而且还有比较深入的使用介绍.在文章发布后,也有网友提到一些问题,当时我也没仔细去分析,在这次我亲自使用的过程中,就对几个问题进行了比较深入的研究,同时对不满足自己的地方,也进行了扩展.所以今天就把对SharpConfig的源码进行一个简单的分析,同时也根据需求对自己的一个特殊情况进行扩展.

.NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB

原文:.NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB     今天给大家介绍一个不错的小巧轻量级的NoSQL文件数据库LiteDB.本博客在2013年也介绍过2款.NET平台的开源数据库: 1.[原创]开源.NET下的XML数据库介绍及入门  2.[原创]C#开源轻量级对象数据库NDatabase介绍      上面2个数据库我的实际的项目中用过,还不错.当然数据量很小,主要是客户比较变态,必须要用xml文件保存,就想到了,另外NDatabase只是自己觉得好玩,也用了

.NET平台开源项目速览(8)Expression Evaluator表达式计算组件使用

在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下Expression Evaluator验证组件.那里只是概述了一下,并没有对其使用和强大功能做深入研究,所以今天就通过一篇简单的文章来预览一下其强大的功能.本文曾在[原创].NET开源表达式计算组件介绍与使用一文中介绍过一个.NET平台开源的表达式计算组件NCal.不过经过比较还是这个Expression Evaluator比较强大,虽然部分功能有重叠.也都能计算常规的数学表达式.这个组件的

[置顶].NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(一)

    在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下FluentValidation验证组件.那里只是概述了一下,并没有对其使用和强大功能做深入研究,所以今天以及接下去的几篇文章就专门介绍这个组件.不仅仅是它小,轻量级,优雅,而且一直在持续更新中.本人对这个感触很深是源于4年前自己在做一个数据过滤软件时,自己也设计了一套验证过滤的东西,虽然勉强能用,但太复杂了,复杂到我看到就想吐...指导我遇到了FluentValidation,彻底颠

.NET平台开源项目速览(9)软件序列号生成组件SoftwareProtector介绍与使用

在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下Software Protector序列号生成组件.今天就通过一篇简单的文章来预览一下其强大的功能.虽然我人为其已经基本满足了一个软件序列号的所有要素,但至于大家用不用得上,还得看大家的需求.总的来说,其源码并不复杂的,即使要增加功能,也可以使用其进行扩展.何苦,就我而言,虽然以前也做过简单的序列号注册和验证,但看完这个之后,自己真的是太天真了.以前也简直是弱爆了,所以某种意义上,这个组件的功

.NET平台开源项目速览(4).NET文档生成工具ADB及使用

原文:.NET平台开源项目速览(4).NET文档生成工具ADB及使用     很久以前就使用ADB这个工具来生成项目的帮助文档.功能强大,在学习一些开源项目的过程中,官方没有提供CHM帮助文档,所以为了快速的了解项目结构和注释.就生成文档来自己看,非常好用.这也是一个学习方法吧.例如本文在: .NET平台开源项目速览(2)Compare .NET Objects对象比较组件 .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB 上述2篇文章中最后的资源中就手动制作了CHM帮助