在Ionic的HmacSHA256中转换为字符串时不一致

时间:2018-07-03 22:26:50

标签: typescript ionic-framework

我想对我遇到的以下问题发表评论。我正在IONIC中创建一个令牌,为此我使用了CryptoJS库。在创建签名时,它给我的数字与我期望的完全不同。我期望的签名是lLJuDJVb4DThZq / yP4fgYOk / 14d3piOvlSuWEI / E7po =,给我方法的签名如下:94b26e0c955be034e166aff23f87e060e93fd78777a623af952b96108fc4ee9a 我已经阅读了文档,我想我缺少了一些东西,但是我无法抓住它。我在下面留下代码:

GenerarToken(data)

{

let datos:string = btoa(JSON.stringify(data));

let encabezado:string = btoa(JSON.stringify({
  "typ": "JWT",
  "alg": "HS256"
}));

let unido:string = encabezado +  "." + datos;

var llave = CryptoJS.HmacSHA256(unido, key).toString();
let token = unido + '.' + llave;

return token; 

}

关于标头和有效负载,我同意,我只有在创建签名时才有问题。

1 个答案:

答案 0 :(得分:0)

您似乎正在期待以base64编码的输出,但是正在获取十六进制输出,因为这是默认设置。尝试传递编码:

var llave = CryptoJS.HmacSHA256(unido, key).toString(CryptoJS.enc.Base64);

记录在https://github.com/jakubzapletal/crypto-js#the-hasher-output