UNPKG

dikacryptjs

Version:

Encrypt and Decrypt System in Node JS

74 lines (63 loc) 2.85 kB
const uuid = Buffer.from("Andika", "utf-8").toString("hex") class CryptJS { constructor(options = {}) { this.useHex = options.hasOwnProperty('useHex') ? options.useHex : true this.useBase64 = options.hasOwnProperty('useBase64') ? options.useBase64 : true } genSaltSync = () => { return uuid } encrypt = (string = String(), salt = String(), outputHash = String()) => { let data = [] const id = Buffer.from(salt, "utf-8").toString("base64") const ttl = Buffer.from(string, "utf-8").toString("base64") for(let i = 0; i < (id.length + ttl.length); i++) { data.push(ttl[i]) if(ttl[i] !== undefined) { data.push(id[i]) } } const buffer = data.join("") if (this.useHex && this.useBase64) { if (outputHash === "Hex") { return Buffer.from(Buffer.from(buffer, "utf-8").toString("base64"), "utf-8").toString("hex") } else if (outputHash === "Base64") { return Buffer.from(Buffer.from(buffer, "utf-8").toString("hex"), "utf-8").toString("base64") } } else if (this.useHex && !this.useBase64) { return Buffer.from(buffer, "utf-8").toString("hex") } else if (this.useBase64 && !this.useHex) { return Buffer.from(buffer, "utf-8").toString("base64") } else { return string } } decrypt = (encryptString = String(), salt = String(), inputHash = String()) => { if (this.useHex && this.useBase64) { if (inputHash === "Hex") { encryptString = Buffer.from(Buffer.from(encryptString, "hex").toString("utf-8"), "base64").toString("utf-8") } else if (inputHash === "Base64") { encryptString = Buffer.from(Buffer.from(encryptString, "base64").toString("utf-8"), "hex").toString("utf-8") } } else if (this.useHex) { encryptString = Buffer.from(encryptString, "hex").toString("utf-8") } else if (this.useBase64) { encryptString = Buffer.from(encryptString, "base64").toString("utf-8") } else { return encryptString } let data = [] const idLength = Buffer.from(salt, "utf-8").toString("base64").length * 2 for (let i = 0; i < encryptString.slice(0, idLength).length; i++) { if ((i % 2) == 0) { data.push(encryptString[i]) } } data = Buffer.from(data.join(""), "base64").toString("utf-8") const lastText = Buffer.from(encryptString.slice(idLength), "base64").toString("utf-8") return data + lastText } } module.exports = { CryptJS }