如何在 Appcelerator 中生成 base64 编码的 SHA-512 哈希?

How to generate a base64 encoded, SHA-512 hash in Appcelerator?

已经尝试了 2 天,但惨遭失败。我们正在使用 appcelerator 5.1.0.

我可以使用模块 Securely 对字符串进行哈希处理。但是结果字符串是十六进制格式,我需要它是 base64 编码的字符串。

尝试了 Ti.Utils.base64encode 函数,但结果与后端生成的结果不匹配。这是我的代码片段:

function convertHexToBase64(hexStr){
    console.log("hex: "+hexStr);
    var hexArray = hexStr
            .replace(/\r|\n/g, "")
            .replace(/([\da-fA-F]{2}) ?/g, "0x ")
            .replace(/ +$/, "")
            .split(" ");
    var byteString = String.fromCharCode.apply(null, hexArray);
    var base64String = Ti.Utils.base64encode(byteString).toString();
    console.log("base64 string:"+base64String);
    return base64String;
}

试图找到其他模块来使用,节点的缓冲区是我能得到的最接近的,但我不确定如何在 appcelerator 中使用节点 class...

谁能说一两句?谢谢

终于在Forge的帮助下完成了,把步骤放在这里供以后参考

  1. lib文件夹下新建一个文件夹,命名为forge
  2. 将模块安装到本地机器(通过节点),将 js 文件夹的全部内容复制到 forge 文件夹中。
  3. 在代码中,创建对象:

    var forge = require('forge/forge');

  4. 首先对字符串进行哈希处理得到一个缓冲区对象,然后将其编码为base64字符串。

var md = forge.md.sha512.create(); md.update(saltedText); var buffer = md.digest(); result = forge.util.encode64(buffer.getBytes());