Cara Mengenkripsi dan Mendekripsi String Teks dengan JavaScript
Metode sederhana untuk mengenkripsi dan mendekripsi string teks dan sandi dalam JavaScript dan Google Apps Script
Jika Anda memerlukan perpustakaan JavaScript enkripsi dan dekripsi yang sederhana dan mudah diterapkan yang dapat menyandikan sepotong teks dan kemudian mendekode string yang disandikan di sisi server.
Opsi termudah adalah skema pengkodean base64 yang dapat dengan mudah diterapkan di JavaScript asli dan Skrip Google Apps.
Pengkodean Base64 dengan Skrip Google Apps
const base64Encode = (text) => {
const base64data = Utilities.base64Encode(text, Utilities.Charset.UTF_8);
return base64data;
};
const base64Decode = (base64data) => {
const decoded = Utilities.base64Decode(base64data, Utilities.Charset.UTF_8);
const input = Utilities.newBlob(decoded).getDataAsString();
return input;
};
Pengkodean Base64 dengan JavaScript
const CryptoJS = require('crypto-js');
const encrypt = (text) => {
return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(text));
};
const decrypt = (data) => {
return CryptoJS.enc.Base64.parse(data).toString(CryptoJS.enc.Utf8);
};
Berdasarkan contoh diatas kelemahan yang jelas adalah bahwa Base64 sedang melakukan pengkodean (bukan enkripsi) dan string Base64 dapat dengan mudah didekodekan. Jadi Base64 bukan lah solusi dari kebutuhan kita.
Enkripsi & Dekripsi Teks Biasa AES
const CryptoJS = require('crypto-js');
const encryptWithAES = (text) => {
const passphrase = '123';
return CryptoJS.AES.encrypt(text, passphrase).toString();
};
const decryptWithAES = (ciphertext) => {
const passphrase = '123';
const bytes = CryptoJS.AES.decrypt(ciphertext, passphrase);
const originalText = bytes.toString(CryptoJS.enc.Utf8);
return originalText;
};
Enkripsi & Dekripsi AES dengan Skrip Google Apps
import AES from 'crypto-js/aes';
import Utf8 from 'crypto-js/enc-utf8';
const encryptWithAES = (text, passphrase) => {
return AES.encrypt(text, passphrase).toString();
};
const decryptWithAES = (ciphertext, passphrase) => {
const bytes = AES.decrypt(ciphertext, passphrase);
const originalText = bytes.toString(Utf8);
return originalText;
};
global.testAES = () => {
const inputText = 'Hello World';
const passphrase = 'My Secret Passphrase';
Logger.log({ inputText });
const encryptedText = encryptWithAES(inputText, passphrase);
Logger.log({ encryptedText });
const decryptedText = decryptWithAES(encryptedText, passphrase);
Logger.log({ decryptedText });
};
const encryptedMessage = cCryptoGS.CryptoJS.AES.encrypt('message', 'passphrase').toString();
Logger.log(encryptedMessage);
const decryptedMessage = cCryptoGS.CryptoJS.AES.decrypt(encryptedMessage, 'passphrase').toString(CryptoJS.enc.Utf8);
Logger.log(decryptedMessage);