UNPKG

nitlix-crypto

Version:

😍 Another starting collection of hashing, salting and other encryption tools 🚀 for the back-end side of the web.

37 lines (36 loc) 1.94 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = default_1; function default_1(string_1, saltedString_1) { return __awaiter(this, arguments, void 0, function* (string, saltedString, roundsUsed = 10) { const [salt, hash] = saltedString.split(":"); // Convert string to ArrayBuffer const encoder = new TextEncoder(); const stringBuffer = encoder.encode(string); const saltBuffer = encoder.encode(salt); // Import the key for PBKDF2 const key = yield crypto.subtle.importKey("raw", stringBuffer, { name: "PBKDF2" }, false, ["deriveBits"]); // Derive bits using PBKDF2 with the same parameters const derivedBits = yield crypto.subtle.deriveBits({ name: "PBKDF2", salt: saltBuffer, iterations: roundsUsed, hash: "SHA-512", }, key, 512 // 64 bytes = 512 bits ); // Convert derived bits to hex string const derivedArray = new Uint8Array(derivedBits); const derivedHex = Array.from(derivedArray, (byte) => byte.toString(16).padStart(2, "0")).join(""); // Compare the derived hash with the stored hash return hash === derivedHex; }); }