WEB开发网
开发学院软件开发VC 基于SHA-256的HMAC文件校验器 阅读

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

 2007-03-15 21:52:58 来源:WEB开发网   
核心提示: 程序中的Mac类与HAMC和HASH函数都无关,只是一个存放结果的介质,基于SHA-256的HMAC文件校验器(3),它甚至都没有成员函数,我也在考虑是不是可以不把它做成一个类,而是密码与网安方面的专业教材,它的中文版也译得不错,为了便于读者阅读HMac类中的各变量基本上采用图二中的各标识

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

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

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

for(i=0;i<Mb;i++)
  S[i]=sKeyplus[i]^ipad[i];
m_sha256.Init(Mb);
m_sha256.GenW(S,Mb);
m_sha256.Steps();
m_dwA1=m_sha256.OA;
m_dwB1=m_sha256.OB;
m_dwC1=m_sha256.OC;
m_dwD1=m_sha256.OD;
m_dwE1=m_sha256.OE;
m_dwF1=m_sha256.OF;
m_dwG1=m_sha256.OG;
m_dwH1=m_sha256.OH;   
  其实m_dwA1—m_dwH1就是第一个预计算的输出。这里因为这个输出有256位,于是我把它拆成了8个32位。同理,第二个预计算的输出为m_dwA2—m_dwH2。

此外,程序中关于文件拖放和文件保存打开的部分(包括串行化等)对于初学者来说都是一个不错的借鉴,当然高手就不需在意了。下面将给出一个例子使读者的认识感性化一点。

三、例子

我有一张非常重要的图片传给你,如下:

图三 例图 VeriFileimg3

在传这张图的同时附上它的校验文件“important.vri”。(该校验文件在源代码压缩包)

而你收到的图片如下:(它在传送中在8,46处被非法的第三方修改了一个象素)

图四 例图VeriFileimg4

你用该软件对其进行校验可以如下操作:

  • 运行该软件,打开important.vri(打开方式有两种,你可以从菜单‘文件-打开’中打开,也可以直接把文件拖进程序窗口中。)

    (第一次运行该软件后,程序会创建一个对vri文件的关联,以后打开vri文件就能以双击vri文件打开了。);

  • 将要校验的文件拖入程序窗口中,在弹出的对话框中选否;或者是从菜单‘校验文件-验证源文件’中打开;
  • 然后程序要求输入校验密钥,这里你和我约定的密钥为gamsn,也就是输入gamsn;
  • 程序会计算源文件的校验码值,并告诉你结果;
  • 由源文件生成校验文件的操作也很简单,从菜单‘校验文件-生成校验文件’中选中你的源文件,然后在弹出的对话框中输入密钥就可以了。提醒一下,密钥最大有效长度为16字节,中英文不限。生成的校验文件都自动以vri为后缀名。

    四、结束语

    大概情况就是如此,大家有什么问题或指正可以与我联系,谢谢!

    另外如果诸君对HASH函数感兴趣的话可以参考 William Stallings 的 Cryptography and Network Security Principles and Practices 一书第三版。该书不是编程方面的指南,而是密码与网安方面的专业教材。它的中文版也译得不错,是一本好书。

    上一页  1 2 3 

    Tags:基于 SHA HMAC

    编辑录入:爽爽 [复制链接] [打 印]
    赞助商链接