Auto.js中对字符串生成SHA256哈希值的方法
日期:
标签:Auto.js
如需帮忙改代码,或者WordPress二次开发、PHP网站建设等需求,可联系我购买付费服务: 点此联系我
最近在Auto.js中做腾讯云的文字识别OCR,其中有个难点是腾讯云的v3签名(有时也称作 TC3-HMAC-SHA256),其中需要用到几个加密算法,在其他服务端语言中都有现成的函数可以使用,但是在JavaScript和Auto.js中都找不到对应的函数,幸好Auto.js支持Java,参考Java代码稍微转换一下就可以用了。
今天介绍的是字符串生成SHA256算法的哈希值的方法。相当于PHP的 hash("SHA256", $str)
/*
测试环境:
AutoX.js 5.5.3
安卓7.1模拟器
*/
importClass(java.nio.charset.StandardCharsets);
importClass(java.security.MessageDigest);
// 二进制byte数组转换成十六进制输出
// byte[] 转Hex String
function byteToHexString(bytes) {
var val = "";
for (var i = 0; i < bytes.length; i++) {
var tmp = bytes[i];
if (tmp < 0) {
tmp = 256 + tmp;
}
tmp = tmp.toString(16);
if ((tmp + "").length == 1) {
tmp = "0" + tmp;
}
val += tmp;
}
return val;
}
// 将字符串生成SHA-256算法的哈希值 hash
// 相当于PHP的 hash("SHA256", $str);
// 返回值是16进制字符串
function sha256Hex(str) {
// 字符串编码,这里是UTF-8
let UTF8 = StandardCharsets.UTF_8;
str = java.lang.String(str);
var md = MessageDigest.getInstance("SHA-256");
md.update(str.getBytes(UTF8));
return byteToHexString(md.digest());
}
// a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3
console.log( sha256Hex('123') );
如果希望返回的二进制数据,可以这样做:
// 返回值是二进制字符串
// 相当于PHP的 hash("SHA256", $str, true)
function sha256Hex(str) {
// 字符串编码,这里是UTF-8
let UTF8 = StandardCharsets.UTF_8;
str = java.lang.String(str);
var md = MessageDigest.getInstance("SHA-256");
md.update(str.getBytes(UTF8));
return md.digest();
}
相关文章:Auto.js中实现HMAC-SHA256加密算法
-- 完 --
本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜即刻 https://www.ludou.org/auto-js-hex-sha256-hash.html
0 条留言
点此留言