2017-02-09 49 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)