2016-03-04 25 views
-2

有人可以幫我把下面的Fantom代碼轉換成Javascript嗎?從Fantom轉換到Javascript

// compute salted hmac 
hmac := Buf().print("${username}:${userSalt}").hmac("SHA-1", password.toBuf).toBase64 

// now compute login digest using nonce 
digest := "${hmac}:${nonce}".toBuf.toDigest("SHA-1").toBase64 

我已經能夠計算使用CryptoJShmac變量:

var hash = CryptoJS.HmacSHA1("alice:6s6Q5Rn0xZP0LPf89bNdv+65EmMUrTsey2fIhim/wKU=", "secret"); 

var hmac = hash.toString(CryptoJS.enc.Base64); 

但我仍然摘要掙扎。

如果您發佈一個例子,這裏是我使用的測試變量:

username : "alice" 
password : "secret" 
userSalt : "6s6Q5Rn0xZP0LPf89bNdv+65EmMUrTsey2fIhim/wKU=" 
nonce : "3da210bdb1163d0d41d3c516314cbd6e" 
hmac  : "z9NILqJ3QHSG5+GlDnXsV9txjgo=" 
digest : "B2B3mIzE/+dqcqOJJ/ejSGXRKvE=" 
+1

,你能否告訴我們到目前爲止你已經嘗試了什麼? – leDominatre

+0

我嘗試使用2個網站:http://tools.bin63.com/hmac-generator和https://caligatio.github.io/jsSHA/事實是我不完全理解我需要傳遞哪些變量,以及何時?如果我只知道如何傳遞變量和什麼時候hmac ...? –

回答

1

這個答案使用CryptoJS因爲你已經取得了一些成功與它:

var username = "alice"; 
var password = "secret"; 
var userSalt = "6s6Q5Rn0xZP0LPf89bNdv+65EmMUrTsey2fIhim/wKU="; 
var nonce = "3da210bdb1163d0d41d3c516314cbd6e"; 

var hmac  = CryptoJS.HmacSHA1(username + ":" + userSalt, password).toString(CryptoJS.enc.Base64); 
var digest = CryptoJS.SHA1(hmac + ":" + nonce).toString(CryptoJS.enc.Base64); 

console.log(hmac); // --> z9NILqJ3QHSG5+GlDnXsV9txjgo= 
console.log(digest); // --> B2B3mIzE/+dqcqOJJ/ejSGXRKvE= 

請注意它使用以下CryptoJS文件:

/rollups/sha1.js 
/rollups/hmac-sha1.js 
/components/enc-base64-min.js 

您可以看到一個實例小號JS貼斌:

https://jsbin.com/luvinayoyi/edit?js,console

+0

謝謝,這就是我一直在尋找:) –