首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现HMAC SHA-256

如何实现HMAC SHA-256
EN

Cryptography用户
提问于 2015-01-17 14:52:58
回答 1查看 5K关注 0票数 2

我试图弄清楚HMAC SHA-256哈希算法是如何工作的.我知道我们必须使用以下方法:

代码语言:javascript
复制
H (K ^ opad)|| H ((K ^ ipad)|| text)).

我所面临的问题是,我想到了对上述问题的基本理解。据我所知,SHA-256接受“字符输入”。我使用的密钥是256位大小,这导致(K^ipad)是一个512位数。我如何使用它来获得所需的散列?

EN

回答 1

Cryptography用户

回答已采纳

发布于 2015-01-17 15:40:25

SHA-256定义为使用位输入和输出二进制数据。不过,大多数库只根据字节输入而不是位输入执行计算。所以一般来说,SHA-256操作的是字节,而不是字符。

您需要使用字符编码(如UTF-8 )将字符显式地编码为字节,以使用SHA-256。有些平台将字符隐式转换为字节,甚至将字符等同于字节(C/C++中的char类型),但最好使用显式转换。

千万不要混淆字符和字节,它是堆叠溢出密码学问题的一半来源(以及领域中系统上的无数bug,而不仅仅是密码问题)。

在比较库的实现时,不要针对internet上的随机站点进行测试,它们通常也会出现编码/解码错误。相反,与测试向量进行比较,可以明确哪些字节是实际处理的。

在使用正式测试向量成功后,可以与已知的好库(Java、OpenSSL等)执行字符串比较。使用显式指定字符串编码的代码。

票数 4
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/22468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档