英文:
How can convert this code from golang to reactjs in crypto hmac sha256 hex
问题
以下是将Golang代码转换为ReactJS代码的方式:
import CryptoJS from 'crypto-js';
function generateClientToken(secret, user, timestamp, info) {
var token = CryptoJS.HmacSHA256(user + timestamp + info, secret);
var hexToken = token.toString(CryptoJS.enc.Hex);
var base64Token = token.toString(CryptoJS.enc.Base64);
console.log("hmac (hex): ", hexToken);
console.log("hmac (base64): ", base64Token);
}
你可以尝试使用上述代码进行转换。请注意,CryptoJS库的使用方式与Golang中的hmac库略有不同。在ReactJS中,你可以直接使用CryptoJS的HmacSHA256函数来计算HMAC值,并使用toString方法将其转换为十六进制或Base64格式的字符串。
如果转换后的结果仍然与Golang的结果不同,可能是由于输入参数的编码方式不同导致的。请确保在ReactJS代码中使用的参数与Golang代码中的参数相同,并且编码方式也相同(例如,都使用UTF-8编码)。
希望对你有所帮助!如果你还有其他问题,请随时提问。
英文:
Golang code is as below
func GenerateClientToken(secret, user, timestamp, info string) string {
token := hmac.New(sha256.New, []byte(secret))
token.Write([]byte(user))
token.Write([]byte(timestamp))
token.Write([]byte(info))
return hex.EncodeToString(token.Sum(nil))
}
How can I convert from this to reactjs code.
I am trying like this
import CryptoJS from 'crypto-js'
generateClientToken(secret, user, timestamp, info) {
var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, secret);
hmac.update(user);
hmac.update(timestamp);
hmac.update(info);
var hash = hmac.finalize();
console.log("hmac: ", hash.toString(CryptoJS.enc.Base64))
console.log("hmac: ", hash.toString(CryptoJS.enc.Hex))
}
but result is not same with golang result. What am I wrong? and How will I do?
答案1
得分: 0
Go代码:https://play.golang.org/p/7pXgn5GPQm
React:
- 使用的包:"crypto-js": "^3.1.9-1"
- React版本:v15.4.2
在一个React组件内部,有一个函数:
generateClientToken(secret, user, timestamp, info) {
let hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, secret);
hmac.update(user);
hmac.update(timestamp);
hmac.update(info);
let hash = hmac.finalize();
console.log("hmac: ", hash.toString(CryptoJS.enc.Hex))
}
在render()函数内部:
const secret = "test";
const user = "Dennis";
const timestamp = "1";
const info = "qwerty";
this.generateClientToken(secret, user, timestamp, info);
英文:
Go code: https://play.golang.org/p/7pXgn5GPQm
React:
- Package used: "crypto-js": "^3.1.9-1"
- React v15.4.2
Inside a React Component, a function:
generateClientToken(secret, user, timestamp, info) {
let hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, secret);
hmac.update(user);
hmac.update(timestamp);
hmac.update(info);
let hash = hmac.finalize();
console.log("hmac: ", hash.toString(CryptoJS.enc.Hex))
}
Inside render()
const secret = "test";
const user = "Dennis";
const timestamp = "1";
const info = "qwerty";
this.generateClientToken(secret, user, timestamp, info);
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论