小编Qwe*_*ers的帖子

HMAC<Sha256> 的结果与另一个实现不同

我正在尝试使用 SHA256 实现 HMAC 验证以与 API 交互。我找到了hmacsha2板条箱,根据他们的示例,它们将非常适合我的目的。

我有这个代码:

extern crate hmac;
extern crate sha2;

use hmac::{Hmac, Mac};
use sha2::{Digest, Sha256};

pub fn verify(message: &[u8], code: &[u8], key: &[u8]) -> bool {
    type HmacSha256 = Hmac<Sha256>;

    let mut mac = HmacSha256::new_varkey(key).unwrap();
    mac.input(message);

    let result = mac.result().code();
    return result == code;
}

#[cfg(test)]
mod tests {
    use verify;
    #[test]
    fn should_work() {
        assert!(verify(
          b"code=0907a61c0c8d55e99db179b68161bc00&shop=some-shop.myshopify.com&timestamp=1337178173",
          b"4712bf92ffc2917d15a2f5a273e39f0116667419aa4b6ac0b3baaf26fa3c4d20",
          b"hush"
        ), "Returned false with correct parameters!");
    }

    #[test]
    fn shouldnt_work() {
        assert!( …
Run Code Online (Sandbox Code Playgroud)

cryptography sha256 hmac rust

2
推荐指数
1
解决办法
2744
查看次数

标签 统计

cryptography ×1

hmac ×1

rust ×1

sha256 ×1