How can convert this code from golang to reactjs in crypto hmac sha256 hex

huangapple go评论94阅读模式
英文:

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);

huangapple
  • 本文由 发表于 2017年1月7日 20:04:33
  • 转载请务必保留本文链接:https://go.coder-hub.com/41521245.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定