Heim  >  Artikel  >  Web-Frontend  >  So implementieren Sie die AES-Verschlüsselung mithilfe von JavaScript

So implementieren Sie die AES-Verschlüsselung mithilfe von JavaScript

PHPz
PHPzOriginal
2023-04-26 10:34:448695Durchsuche

Mit der Popularisierung des Internets und der immer häufigeren Datenübertragung gewinnen Fragen der Datensicherheit immer mehr an Bedeutung. Um die Datensicherheit zu gewährleisten, werden häufig Verschlüsselungsalgorithmen eingesetzt. AES (Advanced Encryption Standard) ist derzeit einer der am häufigsten verwendeten symmetrischen Verschlüsselungsalgorithmen und wird häufig zum Verschlüsselungsschutz bei der Datenübertragung und -speicherung eingesetzt.

In diesem Artikel wird detailliert beschrieben, wie Sie JavaScript zur Implementierung der AES-Verschlüsselung verwenden.

1. AES-Verschlüsselung verstehen

Der AES-Verschlüsselungsalgorithmus ist ein symmetrischer Verschlüsselungsalgorithmus, das heißt, für die Verschlüsselung und Entschlüsselung wird derselbe Schlüssel verwendet, der üblicherweise als „geheimer Schlüssel“ bezeichnet wird. AES kann Daten verschlüsseln und entschlüsseln. Die Schlüssellänge von AES kann 128 Bit, 192 Bit oder 256 Bit betragen. Durch die Verwendung unterschiedlich langer Schlüssel können unterschiedliche Sicherheitsstufen erreicht werden.

Der AES-Verschlüsselungsalgorithmus ist im Wesentlichen ein Substitutions- und Permutationsverschlüsselungsalgorithmus, der einen Schlüssel und einen Initialisierungsvektor (IV) verwendet, um Verschlüsselungs- oder Entschlüsselungsvorgänge durchzuführen und dabei Chiffretext oder Klartext zu erzeugen. Der AES-Verschlüsselungsalgorithmus ist in drei Modi unterteilt: Electronic Codebook (ECB), Cipher Block Chaining (CBC) und Counter Mode (CTR). In diesem Artikel wird der Advanced Encryption Standard-Modus (CTR) verwendet.

2. Einführung der CryptoJS-Bibliothek

CryptoJS ist eine leistungsstarke JavaScript-Verschlüsselungsbibliothek, die mehrere Verschlüsselungsalgorithmen unterstützt, einschließlich AES-Verschlüsselung. Bevor wir mit der Implementierung der AES-Verschlüsselung beginnen, müssen wir die CryptoJS-Verschlüsselungsbibliothek vorstellen. CryptoJS kann über JavaScript-Skript-Tags oder direkt über heruntergeladene js-Dateien eingeführt werden.

Um die Integrität und Praktikabilität der AES-Verschlüsselung widerzuspiegeln, wählen wir hier download.min.js, um die CryptoJS-Bibliothek vorzustellen.

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

3. AES-Verschlüsselung implementieren

Die Verwendung von CryptoJS zur Implementierung der AES-Verschlüsselung ist sehr einfach. Sie müssen nur den Klartext und den Schlüssel übergeben, um den verschlüsselten Chiffretext zu erhalten. Das Folgende ist ein Beispiel für eine AES-Verschlüsselung basierend auf dem CTR-Modus:

/**
 * 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);
}

Der obige Code verwendet den eingehenden Klartext und Schlüssel als Parameter, generiert einen Zufallsvektor, verwendet den CTR-Modus für die AES-Verschlüsselung und verkettet schließlich den verschlüsselten Chiffretext und Vektor und gibt ihn zurück .

4. Implementierung der AES-Entschlüsselung

Es ist ebenso einfach, die AES-Entschlüsselung mit CryptoJS zu implementieren. Solange wir den verschlüsselten Chiffretext und Schlüssel übergeben, können wir den entschlüsselten Klartext erhalten.

/**
 * 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);
}

Der obige Code verwendet den eingehenden Chiffretext und Schlüssel als Parameter, teilt Chiffretext und Vektor auf, verwendet den CTR-Modus, um den AES-Entschlüsselungsvorgang durchzuführen, und gibt schließlich den entschlüsselten Klartext zurück.

5. Testen Sie die AES-Verschlüsselung und -Entschlüsselung

Nachdem wir den obigen Code implementiert haben, führen Sie den AES-Verschlüsselungs- und Entschlüsselungstest wie folgt durch:

// 初始化密钥
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);

Führen Sie den obigen Code aus, um die AES-Verschlüsselungs- und Entschlüsselungsfunktionen zu testen Die Konsole AES-verschlüsselter Chiffretext und entschlüsselter Klartext.

6. Zusammenfassung

Das Obige ist der spezifische Prozess der Verwendung von JavaScript zur Implementierung der AES-Verschlüsselung. Mit Hilfe der CryptoJS-Verschlüsselungsbibliothek können wir die AES-Verschlüsselung und -Entschlüsselung problemlos implementieren. Der AES-Verschlüsselungsalgorithmus wird im Bereich der Datensicherheit häufig verwendet. Wenn Sie sich Sorgen über Datensicherheitsprobleme machen, können Sie diesen Algorithmus erlernen und zur Implementierung der Datenverschlüsselung verwenden.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die AES-Verschlüsselung mithilfe von JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn