aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--examples/sha.js68
1 files changed, 68 insertions, 0 deletions
diff --git a/examples/sha.js b/examples/sha.js
new file mode 100644
index 000000000..ab3b21164
--- /dev/null
+++ b/examples/sha.js
@@ -0,0 +1,68 @@
+import { SHA1, SHA256, SHA512, SHA384, SHA512_256, MD5, MD4, sha } from "bun";
+
+const input = "Hello World";
+const [first, second] = input.split(" ");
+
+const log = (name, ...args) =>
+ console.log(`${name}:`.padStart("SHA512_256: ".length), ...args);
+
+console.log("");
+// This is SHA512-256:
+// This function is shorthand for SHA512_256.hash(input)
+log("Bun.sha()", sha(input, "base64"));
+
+log("SHA1", SHA1.hash(input, "hex"));
+log("SHA256", SHA256.hash(input, "hex"));
+log("SHA384", SHA384.hash(input, "hex"));
+log("SHA512", SHA512.hash(input, "hex"));
+log("SHA512_256", SHA512_256.hash(input, "hex"));
+
+console.log("");
+console.log("---- Chunked ----");
+console.log("");
+
+// You can also do updates in chunks:
+// const hash = new Hash();
+for (let Hash of [SHA1, SHA256, SHA384, SHA512, SHA512_256]) {
+ const hash = new Hash();
+ hash.update(first);
+ hash.update(" " + second);
+ log(Hash.name, hash.digest("hex"));
+}
+
+console.log("");
+console.log("---- Base64 ----");
+console.log("");
+
+// base64 or hex
+for (let Hash of [SHA1, SHA256, SHA384, SHA512, SHA512_256]) {
+ const hash = new Hash();
+ hash.update(first);
+ hash.update(" " + second);
+ log(Hash.name, hash.digest("base64"));
+}
+
+console.log("");
+console.log("---- Uint8Array ----");
+console.log("");
+
+// Uint8Array by default
+for (let Hash of [SHA1, SHA256, SHA384, SHA512, SHA512_256]) {
+ const hash = new Hash();
+ hash.update(first);
+ hash.update(" " + second);
+ log(Hash.name, hash.digest());
+}
+
+console.log("");
+console.log("---- Uint8Array can be updated in-place ----");
+console.log("");
+
+var oneBuf = new Uint8Array(1024);
+// Update Uint8Array in-place instead of allocating a new one
+for (let Hash of [SHA1, SHA256, SHA384, SHA512, SHA512_256]) {
+ const hash = new Hash();
+ hash.update(first);
+ hash.update(" " + second);
+ log(Hash.name, hash.digest(oneBuf).subarray(0, Hash.byteLength));
+}