HMACSHA1关闭2个字节
HMACSHA1 off by 2 bytes
我在msvc++ 2010 Express中使用这个类:http://www.codeproject.com/KB/recipes/HMACSHA1class.aspx。我运行的是32位Vista。为了让它工作,我只是改变了…
SHA1.cpp:
fIn = fopen(szFileName, "rb");
fIn = fopen_s(szFileName, "rb");
因为如果没有这个更改,它会说:"error C3861: 'fopen': identifier not found"。
我在int main中使用的代码是: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((const char *)test), Key, sizeof(Key), digest) ;
for(int i=0;i<sizeof(digest);i++)
std::cout << hex << (int)digest[i];
int a;
std::cin >> a;
// Check with digest equal to 0xb617318655057264e28bc0b6fb378c8ef146be00
// or not
问题是我的摘要等于:0xb61731865557264e28bc0b6fb378c8ef146be0,它应该等于0xb617318655057264e28bc0b6fb378c8ef146be00。任何关于这段代码有什么问题以及如何让它工作的帮助将会有很大帮助…
或者也许有人可以为我指出一个更好的HMACSHA1类的正确方向。win32的CryptoAPI太复杂和愚蠢了
我猜这是因为文摘中的一些字节值是<10表示只写一个字符。
也许这能解决你的问题:
for(int i=0;i<sizeof(digest);i++)
std::cout << setfill('0') << setw(2) << hex << (int)digest[i];
相关文章:
- 从文件中读取多个字节,并将它们存储在C++中进行比较
- 如何使用 OpenCV 解码在两个 UWP 应用之间发送的图像字节?
- 找到一种有效的方法,在 2 个巨大的缓冲区上执行 MAX,每字节字节
- 为什么 bool 和 _Bool 如果它们在内存中占用 1 个字节,它们只能存储 0 或 1
- 在 Linux 中,uint32_t从 4 个字节更改为 6 个字节
- 运行时错误:引用绑定到类型"int"的未对齐地址0xbebebebebebebec6,这需要 4 个字节对齐 (stl_vector.h)
- 向指针地址添加 20 个字节偏移量
- 将(N 个字节)无符号字符指针转换为浮点数和双 C++
- C++/地址空间:每个地址 2 个字节?
- 为什么这个结构需要 24 个字节
- 为什么带有 vptr 的对象长 12 个字节?
- 使用 valgrind 检查我的链表暗示中的内存泄漏,让我"肯定丢失:1 个块中有 40 个字节"
- 复制后删除原始数组指针将前 3 个字节设置为 0
- 在编译时而不是运行时创建一个由两个字节组成的值
- 为什么在我的实现中,所有数组都对齐到 16 个字节?
- 使用 Python 导出 4 个字节浮点数
- C++向指针地址添加 4 个字节
- 是否强制转换void**并将第一个字节设置为nullptr
- AES-128 CFB-8解密的前16个字节已损坏
- 检查 IP 第一个八位字节是否不以 127 / 224 或 255 开头