dikacryptjs
Version:
Encrypt and Decrypt System in Node JS
74 lines (63 loc) • 2.85 kB
JavaScript
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
}