如何将散列函数从Python转换为R

时间:2015-07-11 18:19:52

标签: python r

我正在尝试将以下python脚本翻译为R,但我遇到的困难反映了我不熟悉Python或R的事实。

以下是我对Python的看法:

import hashlib, hmac
print hmac.new('123456', 'hello'.encode('utf-8'),hashlib.sha256).digest()

当我在Python中运行时,我收到一条消息,指出标准输出是空的。

问题:我做错了什么?

这是我用于R

的内容
library('digest')
hmac('123456','hello', algo='sha256', serialize=FALSE)

我对R代码的疑问是:

  1. 如何在R中编码为utf-8。我找不到包。
  2. 对于序列化和原始R的正确参数设置是什么,因为我想匹配上面Python函数的输出(一旦它工作)。

1 个答案:

答案 0 :(得分:2)

如果要在R中获取哈希的字节,请设置raw=TRUE。然后你可以把它写成二进制精细

library('digest')
x <- hmac('123456', enc2utf8('hello'), algo='sha256', serialize=FALSE, raw=TRUE)
writeBin(x, "Rout.txt")

如果您没有输出文字,则编码无关紧要。这些是原始字节。输出中唯一不同的是python print似乎添加了一个新的行字符。如果我在R文件上进行hexdump,我会看到

0000000 ac 28 d6 02 c7 67 42 4d 0c 80 9e de bf 73 82 8b
0000010 ed 5c e9 9c e1 55 6f 4d f8 e2 23 fa ee c6 0e dd