Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk melaksanakan penyulitan AES menggunakan JavaScript

Bagaimana untuk melaksanakan penyulitan AES menggunakan JavaScript

PHPz
PHPzasal
2023-04-26 10:34:448695semak imbas

Dengan populariti Internet dan penghantaran data yang semakin kerap, isu keselamatan data menjadi semakin penting. Untuk memastikan keselamatan data, algoritma penyulitan digunakan secara meluas. AES (Advanced Encryption Standard) ialah salah satu daripada algoritma penyulitan simetri yang paling biasa digunakan pada masa ini dan digunakan secara meluas untuk perlindungan penyulitan semasa penghantaran dan penyimpanan data.

Artikel ini akan memperkenalkan secara terperinci cara menggunakan JavaScript untuk melaksanakan penyulitan AES.

1. Memahami penyulitan AES

Algoritma penyulitan AES ialah algoritma penyulitan simetri, iaitu kunci yang sama digunakan untuk penyulitan dan penyahsulitan, biasanya dipanggil "kunci rahsia". AES boleh menyulitkan dan menyahsulit data. Panjang kunci AES boleh menjadi 128 bit, 192 bit atau 256 bit. Dengan menggunakan kekunci dengan panjang yang berbeza, tahap keselamatan yang berbeza boleh dicapai.

Algoritma penyulitan AES pada asasnya ialah algoritma penyulitan gantian dan pilih atur yang menggunakan kunci dan vektor permulaan (IV) untuk melaksanakan operasi penyulitan atau penyahsulitan untuk menghasilkan teks sifir atau teks biasa. Algoritma penyulitan AES dibahagikan kepada tiga mod: buku kod elektronik (ECB), rantaian blok sifir (CBC) dan mod balas (CTR). Artikel ini menggunakan mod Standard Penyulitan Lanjutan (CTR).

2. Memperkenalkan pustaka CryptoJS

CryptoJS ialah perpustakaan penyulitan JavaScript yang kuat yang menyokong berbilang algoritma penyulitan, termasuk penyulitan AES. Sebelum kami mula melaksanakan penyulitan AES, kami perlu memperkenalkan perpustakaan penyulitan CryptoJS. CryptoJS boleh diperkenalkan melalui tag skrip JavaScript atau terus menggunakan fail js yang dimuat turun.

Untuk mencerminkan integriti dan kepraktisan penyulitan AES, di sini kami memilih download.min.js untuk memperkenalkan perpustakaan CryptoJS.

<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js"></script>

3. Melaksanakan penyulitan AES

Menggunakan CryptoJS untuk melaksanakan penyulitan AES adalah sangat mudah Anda hanya perlu memasukkan teks biasa dan kunci untuk mendapatkan teks sifir yang disulitkan. Berikut ialah contoh penyulitan AES berdasarkan mod CTR:

/**
 * AES加密方法
 * @param {*} data 明文
 * @param {*} key 密钥
 * @returns 密文
 */
function aesEncrypt(data, key) {
  // OpenSSL向量
  var iv = CryptoJS.lib.WordArray.random(16);
  var encrypted = CryptoJS.AES.encrypt(data, key, {
    iv: iv,
    mode: CryptoJS.mode.CTR,
    padding: CryptoJS.pad.Pkcs7
  });
  // 将密钥和向量进行拼接,一起返回
  return encrypted.ciphertext.toString(CryptoJS.enc.Base64) + ':' + iv.toString(CryptoJS.enc.Hex);
}

Kod di atas mengambil teks biasa dan kunci masuk sebagai parameter, menjana vektor rawak dan menggunakan mod CTR untuk penyulitan AES, dan akhirnya menggunakan kata laluan yang disulitkan Teks dan vektor digabungkan dan dikembalikan.

4. Melaksanakan penyahsulitan AES

Sama-sama mudah untuk melaksanakan penyahsulitan AES menggunakan CryptoJS. Selagi kami memasukkan teks dan kunci sifir yang disulitkan, kami boleh mendapatkan teks biasa yang disulitkan.

/**
 * AES解密方法
 * @param {*} data 密文
 * @param {*} key 密钥
 * @returns 明文
 */
function aesDecrypt(data, key) {
  // 拆分密文和向量
  var parts = data.split(':');
  var ciphertext = CryptoJS.enc.Base64.parse(parts[0]);
  var iv = CryptoJS.enc.Hex.parse(parts[1]);
  var decrypted = CryptoJS.AES.decrypt({ ciphertext: ciphertext }, key, {
    iv: iv,
    mode: CryptoJS.mode.CTR,
    padding: CryptoJS.pad.Pkcs7
  });
  return decrypted.toString(CryptoJS.enc.Utf8);
}

Kod di atas mengambil teks sifir dan kunci masuk sebagai parameter, membahagikan teks sifir dan vektor, menggunakan mod CTR untuk melaksanakan operasi penyahsulitan AES dan akhirnya mengembalikan teks biasa yang disulitkan.

5. Uji penyulitan dan penyahsulitan AES

Selepas kami melaksanakan kod di atas, lakukan ujian penyulitan dan penyahsulitan AES seperti berikut:

// 初始化密钥
var key = CryptoJS.enc.Utf8.parse('qwer1234qwer1234');

// 加密测试
var data = 'Hello World';
var encrypted = aesEncrypt(data, key);
console.log('加密后的密文:', encrypted);

// 解密测试
var decrypted = aesDecrypt(encrypted, key);
console.log('解密后的明文:', decrypted);

Jalankan kod di atas untuk menguji penyulitan AES dan fungsi penyahsulitan, anda boleh melihat teks sifir yang disulitkan AES dan output teks biasa yang disulitkan pada konsol.

6. Ringkasan

Di atas ialah proses khusus menggunakan JavaScript untuk melaksanakan penyulitan AES. Dengan bantuan perpustakaan penyulitan CryptoJS, kami boleh melaksanakan penyulitan dan penyahsulitan AES dengan mudah. Algoritma penyulitan AES digunakan secara meluas dalam bidang keselamatan data Jika anda bimbang tentang isu keselamatan data, anda boleh mempelajari dan menggunakan algoritma ini untuk melaksanakan penyulitan data.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan penyulitan AES menggunakan JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn