65.9K
CodeProject 正在变化。 阅读更多。
Home

C++ HMAC-SHA 类实现

starIconstarIconstarIconemptyStarIconemptyStarIcon

3.00/5 (12投票s)

2007年12月14日

CPOL
viewsIcon

171247

downloadIcon

3873

C++ HMAC-SHA1 类

引言

这是我在 CodeProject 上的第一篇文章。抱歉我的英语不好。

我认为分享这个 HMAC-SHA1 类的理由是,我没有找到相关的可以参考的源代码。这是一个简单的 C++ HMAC-SHA1 类,仅支持单字节字符。如果需要,您可以添加双字节字符支持。您会发现这个类只包含一个函数 HMAC_SHA1 ,它接受测试输入和哈希密钥,然后生成摘要。

背景

感谢 Dominik Reichl,我封装的 SHA1 类来自他令人惊叹的类。我只是在其基础上实现了 HMAC 算法。对于 MD5,您可以参考 RFC。其中包含详细的编程流程。

Using the Code

这个类的用法非常简单。声明 CHMAC_SHA1,调用它的 HMAC_SHA1 函数。就完成了!

您可以使用 RFC 2202 测试用例中的 HMAC-SHA1 来验证您的实现。

以下是 RFC 2202 中的测试用例 1。

#include "HMAC_SHA1.h"
 
BYTE Key[20] ;
BYTE digest[20] ; 

unsigned char *test = "Hi There" ; 
memset(Key, 0x0b, 20) ;
CHMAC_SHA1 HMAC_SHA1 ;
HMAC_SHA1.HMAC_SHA1(test, strlen(test), Key, sizeof(Key), digest) ;
 
// Check with digest equal to 0xb617318655057264e28bc0b6fb378c8ef146be00
// or not

历史

  • 2007/12/17:更新示例代码,包含 RFC 2202 测试用例 1
© . All rights reserved.