From 7e33b7da85f58ed93a35c7d8e4f91b7c15b1cadf Mon Sep 17 00:00:00 2001 From: buzz-lightsnack-2007 <73412182+buzz-lightsnack-2007@users.noreply.github.com> Date: Tue, 16 Apr 2024 23:45:16 +0800 Subject: [PATCH] add numerical output option --- scripts/strings/hash.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 scripts/strings/hash.js diff --git a/scripts/strings/hash.js b/scripts/strings/hash.js new file mode 100644 index 0000000..dc9e2a0 --- /dev/null +++ b/scripts/strings/hash.js @@ -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`]); + }; +} \ No newline at end of file