JavaScript SHA-256 demo: https://geraintluff.github.io/sha256/
https://github.com/emn178/js-sha256
到 https://cdnjs.com/ 搜尋
=> https://cdnjs.cloudflare.com/ajax/libs/js-sha256/0.9.0/sha256.min.js
A simple SHA-256 / SHA-224 hash function for JavaScript supports UTF-8 encoding.
It also supports byte `Array`, `Uint8Array`, `ArrayBuffer` input
https://github.com/brix/crypto-js
https://code.google.com/archive/p/crypto-js/
https://blog.zhengxianjun.com/2015/05/javascript-crypto-js/
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9/crypto-js.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9/hmac-sha256.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9/enc-base64.min.js"></script>
var hash = CryptoJS.SHA256("Message").toString();
https://github.com/brix/crypto-js/issues/157
var hash = CryptoJS.HmacSHA256("Message", "key");
// Message 是按照使用者的規則拼接的字串
// key為設置密鑰
https://github.com/digitalbazaar/forge
<script src="https://cdn.jsdelivr.net/npm/node-forge@0.7.0/dist/forge.min.js"></script>
<script type="text/javascript">
"use strict";
var md = forge.md.sha256.create();
md.update('The quick brown fox jumps over the lazy dog');
console.log(md.digest().toHex());
console.log(hexToBytes(md.digest().toHex()));
console.log(bytesToHex(hexToBytes(md.digest().toHex())));
// Convert a hex string to a byte array
function hexToBytes(hex) {
for (var bytes = [], c = 0; c < hex.length; c += 2)
bytes.push(parseInt(hex.substr(c, 2), 16));
return bytes;
}
// Convert a byte array to a hex string
function bytesToHex(bytes) {
for (var hex = [], i = 0; i < bytes.length; i++) {
var current = bytes[i] < 0 ? bytes[i] + 256 : bytes[i];
hex.push((current >>> 4).toString(16));
hex.push((current & 0xF).toString(16));
}
return hex.join("");
}
</script>
//十六进制字符串转字节数组
function StrToBytes(str) {
var pos = 0;
var len = str.length;
if(len %2 != 0) {
return null;
}
len /= 2;
var hexA = new Array();
for(var i=0; i<len; i++) {
var s = str.substr(pos, 2);
var v = parseInt(s, 16);
hexA.push(v);
pos += 2;
}
return hexA;
}
//字节数组转十六进制字符串
function BytesToStr(arr) {
var str = "";
for(var i=0; i<arr.length; i++) {
var tmp = arr[i].toString(16);
if(tmp.length == 1) {
tmp = "0" + tmp;
}
str += tmp;
}
return str;
}
javascript 使用 toString 10進位轉2或8或16進位.
toString():預設是10進位轉其它進位,同時,配合正則,可匹配字符。
範例:
<script language="javascript">
var x = 100;
var y1 = x.toString(2);
var y2 = x.toString(8);
var y3 = x.toString(16);
var z = "2進位 = " + y1 + "<br>8進位 = " + y2 + "<br>16進位 = " + y3;
document.write(z);
</script>