已经尝试了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中使用节点类...
任何人都可以放一两盏灯?感谢。
答案 0 :(得分:2)
最后在Forge的帮助下完成了它,将这些步骤放在这里以供将来参考
lib
文件夹下创建一个名为forge
js
文件夹的全部内容复制到forge
文件夹中。在代码中,创建对象:
var forge = require('forge/forge');
首先散列字符串以获取缓冲区对象,然后将其编码为base64字符串。
var md = forge.md.sha512.create();
md.update(saltedText);
var buffer = md.digest();
result = forge.util.encode64(buffer.getBytes());