add numerical output option

This commit is contained in:
buzz-lightsnack-2007 2024-04-16 23:45:16 +08:00
parent d54f6b4081
commit 7e33b7da85

23
scripts/strings/hash.js Normal file
View file

@ -0,0 +1,23 @@
export default class hash {
static async digest (DATA, OPTIONS) {
DATA = {"raw": DATA};
DATA[`hashed`] = await(crypto.subtle.digest(((OPTIONS != null && (typeof OPTIONS).includes(`obj`) && !Array.isArray(OPTIONS)) ? OPTIONS[`digestion`] : false) ? OPTIONS[`digestion`] : "SHA-512", (new TextEncoder()).encode(DATA[`raw`])));
if ((OPTIONS != null && (typeof OPTIONS).includes(`obj`) && !Array.isArray(OPTIONS)) ? OPTIONS[`output`] : false) {
switch (OPTIONS[`output`]) {
case `Uint8Array`:
DATA[`converted`] = new Uint8Array(DATA[`hashed`]);
break;
case `Array`:
DATA[`converted`] = Array.from(new Uint8Array(DATA[`hashed`]));
break;
case `Number`:
DATA[`converted`] = parseInt((Array.from(new Uint8Array(DATA[`hashed`]))).join());
break;
};
}
return ((DATA[`converted`]) ? DATA[`converted`] : DATA[`hashed`]);
};
}