第一句子大全,网罗天下好句子,好文章尽在本站!

基于SHA-256的HMAC文件校验器:保障文件完整性的权威工具

时间:2024-01-31

这个工具采用SHA256哈希算法和HMAC哈希消息认证码技术,对文件的内容进行哈希计算,并利用密钥对哈希值进行加密,生成认证码

友情提示:本文共有 1021 个字,阅读大概需要 3 分钟。

基于SHA-256的HMAC文件校验器是一种安全可靠的文件完整性验证工具。这个工具采用SHA-256哈希算法和HMAC(哈希消息认证码)技术,对文件的内容进行哈希计算,并利用密钥对哈希值进行加密,生成认证码。用户可以使用校验器对文件进行校验,验证文件是否被篡改或损坏。由于SHA-256的强大哈希算法和HMAC的认证技术,这个校验器具有高度的安全性和可靠性,可广泛应用于文件传输、数据存储等领域。

基于SHA-256的HMAC文件校验器,基于SHA-256的HMAC文件校验器

基于SHA-256的HMAC文件校验器

作者:Gamsn

下载源代码

HMAC即带密钥的HASH函数,用它产生的报文鉴别码(MAC)可以实现报文鉴别。这里我将其做成一个软件,用于对文件的合法性进行校验。以下我先简单介绍软件相关背景知识再介绍其代码实现。

一、背景知识简介

有时候进行通信的双方基于安全的考虑需要对对方发过来的消息进行校验,以确定消息是未经第三方修改过的。这种校验可以这样进行:

双方共同约定一个密钥(即一个密码),这个密钥是对第三方保密的;消息的发方使用该密钥对将发送的消息产生一个校验码,并把该校验码附在消息后一起发出;消息的接收方在接收到附有校验码的消息后,将消息和校验码分开,用密钥对该消息生成一个校验码;然后将两个校验码相比较,如果相同的话则说明消息是未经第三方修改的,如果不同的话说明消息很可能被非法修改过(当然也有可能是别的原因使消息改变了)则该消息不可信,需要对方重发;

*其中,生成校验码的算法一般采用HMAC,它保证了第三方在不知密钥的情况下,不可能在修改消息后可以同时修改校验码使之与修改后的消息匹配。

*在整个过程中消息是公开的(未经加密的),算法只提供消息的完整性校验而不提供保密性,保密性可由公钥加密算法现实,这里不作讨论。

二、软件的实现

我做的该软件是可以对电脑磁盘上的任意一文件生成一校验文件.vri(密钥由用户自己输入),根据该校验文件可以在需要之时对相应的文件进行校验。具体做法将在后面的例子中给出。

程序中的HMAC算法的HASH函数我采用的是SHA-256算法,它比起MD5和SHA-1来要安全。(其实因为不是正式的安全产品,所以在本程序中采用MD5或SHA-1也未尝不可)。

*HMAC的结构如下图所示:

图一 HMAC的结构

图中各符号定义如下:

IV =作为HASH函数输入的初始值 M =HMAC的消息输入 Yi =M的第i个分组,0<=i<=(L-1) b =每一分组所含的位数 n =嵌入的HASH函数所产生的HASH码长 K =密钥 K+ =为使K为b位长而在K左边填充0后所得的结果 ipad =0x36重复b/8次的结果 opad =0x5c重复b/8次的结果

对于特定的HASH函数,b、n都是固定的,所以在程序的HMAC类中,n被定义为宏Mn,b被定义为Mb,值分别为32和64。由于该结构的效率较低,不利于实用化。于是有人提出了一个HMAC的高效实现方案。

*HMAC的有效实现方案如下:

图二 HMAC的有效实现方案

其中的HASH即为SHA-256。

图中左边所示为预计算,右边为对每条消息的计算。在密钥不变的情况下只需进行一次预计算,以后在产生校验码时就只用到右边的计算了。这样就可以提高效率。

需要说明的是,大家在阅读我写的HMAC的类可能会发现,在每次计算时都进行了左右两边的计算(不论密钥怎样)。这是因为我考虑到个人用户可能会不时地对密钥进行更换,并且应用场合也不对效率有特别的要求。当然这样做并没有体现出HMAC有效实现方案的优点。

另外还有一点就是我对密钥的填充是填充的低位,即密钥右边,这和上述方案有不同(方案上说是要填充在高位,即左边),在此说明,以使大家在看源代码的时候不至于疑惑。

以上有效实现方案在HMac类中现实,HASH函数sha-256在Sha256类中实现。由于这里主要说的是HMAC,sha-256只是作为一个黑盒子,所以不多解释。

程序中的Mac类与HAMC和HASH函数都无关,只是一个存放结果的介质,它甚至都没有成员函数,我也在考虑是不是可以不把它做成一个类。

为了便于读者阅读HMac类中的各变量基本上采用图二中的各标识符标识。

对于下面一段代码读者可能会有疑惑,明明是该得到第一个预计算的结果,m_dwA1—m_dwH1是什么呢?

for(i=0;i

其实m_dwA1—m_dwH1就是第一个预计算的输出。这里因为这个输出有256位,于是我把它拆成了8个32位。同理,第二个预计算的输出为m_dwA2—m_dwH2。

此外,程序中关于文件拖

本文如果对你有帮助,请点赞收藏《基于SHA-256的HMAC文件校验器:保障文件完整性的权威工具》,同时在此感谢原作者。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
显示评论内容(3)
  1. 双木公子2024-01-31 11:30双木公子[国外网友]123.249.168.238
    @花嫣如花丶花自香灬听起来很专业,我一直在找一个可靠的文件校验工具,看来我找对地方了。期待尽快试用!
    顶0踩0
  2. 花嫣如花丶花自香灬2024-01-31 11:22花嫣如花丶花自香灬[辽宁省网友]203.30.25.28
    看起来功能很实用,能够快速校验文件的完整性,对于保护重要文件真的是必不可少。
    顶8踩0
  3. ✖¬簿凉2024-01-31 11:14✖¬簿凉[江苏省网友]203.20.136.163
    真是太棒了,文件完整性对于数据安全至关重要,这个工具能够给我们更多的安心感。
    顶0踩0
相关阅读
权威人士:一号文件聚焦乡村振兴 乡村治理等成关键词

权威人士:一号文件聚焦乡村振兴 乡村治理等成关键词

中国证券报记者从权威人士处获悉,今年中央一号文件将以乡村振兴战略为主题,深化农业供给侧结构性改革、推进农业农村现代化、推进乡村治理体系和治理能

2014-02-08 #经典句子

pdf形式的网络资料怎么拆分多个pdf文件?

pdf形式的网络资料怎么拆分多个pdf文件?

我们可以在电脑上学习,在电脑上查看文件

2008-02-08 #经典句子

cad多张图片如何批量打印成pdf文件?

cad多张图片如何批量打印成pdf文件?

cad多张图片如何批量打印成pdf文件?cad是计算机辅助设计Computer Aided Design的英文缩写。是目前国内最流行的辅助制图系统。在效果图应用中,cad的作

2009-02-19 #经典句子

英文看不懂怎么办 分享将PDF文件翻译成中文的方法

英文看不懂怎么办 分享将PDF文件翻译成中文的方法

不过,现在已经多了很多工具,可以解决我们的烦恼

2008-01-01 #经典句子

如何把背景图和数据PDF文件叠加合并到一起

如何把背景图和数据PDF文件叠加合并到一起

今天给大家介绍的是如果真的遇到两个PDF文件时,怎么把两个PDF文档叠加合并到一起成一个成品的标签PDF文件,能直接用来印刷

2018-12-11 #经典句子

商务部世贸司就向世贸组织提交《中国关于世贸组织改革的建议文件》发表谈话

商务部世贸司就向世贸组织提交《中国关于世贸组织改革的建议文件》发表谈话

商务部世贸司负责人对此发表谈话,介绍该文件有关情况

2020-01-01 #经典句子

如何把都是英文的pdf文件翻译成中文?

如何把都是英文的pdf文件翻译成中文?

提取信息并没有难倒小芳,但是难倒小芳的却是教授发来的PDF文件是全英文的,本来这个作业不需要花太多时间的,但是小芳英语水平不高,有些句子实在是看不

2008-10-31 #经典句子

如何将PDF文件中的繁体字转成简体字?

如何将PDF文件中的繁体字转成简体字?

具体操作主要分为三步,一起来看看吧

2018-05-04 #经典句子

pdf文件怎么拆分成多个文件?这种方法不仅方便还很实用

pdf文件怎么拆分成多个文件?这种方法不仅方便还很实用

有时候接收到的pdf文件篇幅过长,页数过多时,就需要将文件进行拆分,那pdf文件怎么拆分成多个文件呢?那问题来了,我们拆分文件就需要借助一些拆分工具

2018-01-12 #经典句子