Cara Mengenkripsi dan Mendekripsi String Teks dengan JavaScript

Metode sederhana untuk mengenkripsi dan mendekripsi string teks dan sandi dalam JavaScript dan Google Apps Script




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.

Jadi, kita membutuhkan algoritme enkripsi aman yang memerlukan frasa sandi rahasia untuk mendekripsi teks terenkripsi, jawaban nya adalah menggunakan AES. Ini menghasilkan string yang lebih panjang tetapi tidak dapat didekripsi tanpa kata sandi.

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

Jika Anda ingin menggunakan AESalgoritme enkripsi dengan Google Apps Script, gunakan Apps Script Starter untuk mengimpor CryptoJSpaket ke web Anda seperti yang ditunjukkan dalam contoh ini .
 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 });  
 };  

Alternatifnya, untuk Google Apps Script, pustaka cCryptoGS juga dapat digunakan untuk menerapkan enkripsi AES di web Anda dan add-on Suite. Untuk memulai, buka Resources -> Libraries dan tambahkan libraries MSJnPeIon6nzdLewGV60xWqi_d-phDA33 ke proyek Google Script Anda.

 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);  

Kesimpulan!

Berdasarkan contoh diatas, menggunakan Bash64 bukanlah sebuah solusi jika kita ingin mengenkripsi dan mendekripsi string text dari source code web kita, karena Bash64 sangat mudah untuk di dekode kembali. Solusi nya adalah menggunakan AES. Anda hanya perlu menambahkannya ke Libraries Google Script Anda.

Semoga bermanfaat.
No one is too busy, it's just a matter of priority.