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

时间:2016-08-18 03:51:22

标签: base64 appcelerator-titanium sha512

已经尝试了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$1 ")
            .replace(/ +$/, "")
            .split(" ");
    var byteString = String.fromCharCode.apply(null, hexArray);
    var base64String = Ti.Utils.base64encode(byteString).toString();
    console.log("base64 string:"+base64String);
    return base64String;
}

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

任何人都可以放一两盏灯?感谢。

1 个答案:

答案 0 :(得分:2)

最后在Forge的帮助下完成了它,将这些步骤放在这里以供将来参考

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

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

  5. 首先散列字符串以获取缓冲区对象,然后将其编码为base64字符串。

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