HMAC和R"摘要"包中的换行符出错

 H-蔡鸿晖_515 发布于 2023-01-06 18:20

我正在尝试实现R代码以与Amazon的Alexa Web信息服务进行交互.身份验证系统需要针对密钥对文本进行HMAC哈希处理,但是当文本包含换行符时,"摘要"包似乎存在问题.

R中的最小例子:

library(digest)
hmac("foo", "Hello", algo="sha256")

回来fa687477a49ebadb72eb1103db6128061437a2501db7ee7f0cbbb79ceaa2fcfc,而

hmac("foo", "Hello\nGoodbye", algo="sha256")

回报eaf58b106ffdbb4af976b6b87e14d231e090f7bc144f0b56f06980c827444288.

如果我检查http://www.freeformatter.com/hmac-generator.html,第一个案例给出相同的哈希值,但第二个案例给出967b28392b2ddc871bb69417e916fa619c935840cc2b9507ecf4da3f748bd1ba.

我错过了一些明显的东西吗

提前致谢!!!

1 个回答
  • 因此,虽然MrFlick确实回答了我的具体问题,但真正的问题更深层次.整个问题是由Perl hmac_sha256_base64()和R 之间的分歧引起的.

    事实证明我正在使用R错误.hmac()返回十六进制代码,而不是base64,因此需要执行其他步骤.但是,似乎base64()函数RCurl需要一个字节向量,而不是一个连接的字符串.我在下面说明.

    我在做什么(错):

    require(digest)
    require(RCurl)
    
    > hmac("foo", "Hello", algo="sha256")
    [1] "fa687477a49ebadb72eb1103db6128061437a2501db7ee7f0cbbb79ceaa2fcfc"
    
    > base64(hmac("foo", "Hello", algo="sha256"))
    [1] "ZmE2ODc0NzdhNDllYmFkYjcyZWIxMTAzZGI2MTI4MDYxNDM3YTI1MDFkYjdlZTdmMGNiYmI3OWNlYWEyZmNmYw=="
    attr(,"class")
    [1] "base64"
    

    我应该做什么(正确):

    > hmac("foo", "Hello", algo="sha256", raw = T)
    [1] fa 68 74 77 a4 9e ba db 72 eb 11 03 db 61 28 06 14 37 a2 50 1d b7 ee 7f 0c bb b7 9c ea a2 fc fc
    
    > base64(hmac("foo", "Hello", algo="sha256", raw = T))
    [1] "+mh0d6Seutty6xED22EoBhQ3olAdt+5/DLu3nOqi/Pw="
    attr(,"class")
    [1] "base64"
    

    相反,不是吗?

    后者同意Perl,并且(更重要的是)它实际上在Amazon Web Services上正确验证.:-)

    2023-01-06 18:21 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有