如何在 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的帮助下完成了,把步骤放在这里供以后参考
- 在
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());
已经尝试了 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的帮助下完成了,把步骤放在这里供以后参考
- 在
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());