2017-02-09 50 views
0

我正尝试使用R代替Microsoft提供的C#和Node.js代码片段来为REST API调用生成Azure documentDB验证标头。R中的Azure DocumentDB验证标头

我专门跑到这个转换代码的Node.js至R问题:

var crypto = require("crypto"); 
var key = new Buffer(masterKey, "base64"); 
var text = "helloworld"; 
var body = new Buffer(text, "utf8"); 
var signature = crypto.createHmac("sha256", key).update(body).digest("base64"); 

在这种情况下,masterKey可以被认为是 “abcdefghijklmnopqrsTUVWXyz19284745 ==”

制作SHA256 R中的主密钥的散列,然后base64编码,结果不会返回相同的结果。应该采取什么具体步骤来生成相同的?从我所知道的看来,缓冲区对象或等价物似乎并不存在于R中。

回答

0

请考虑下面的代码片段R:

library(digest) 
library(base64enc) 

masterKey <- "your master key here" 
key <- base64decode(masterKey) 
text <- "helloworld" 
body <- enc2utf8(text) 
signature <- base64encode(hmac(key, body, algo = "sha256", raw = T)) 
print(signature)