JavaScript を使用して AES 暗号化を実装する方法

PHPz
リリース: 2023-04-26 11:11:23
オリジナル
8791 人が閲覧しました

インターネットの普及とデータ送信の頻度の増加に伴い、データセキュリティの問題はますます重要になっています。データのセキュリティを確保するために、暗号化アルゴリズムが広く使用されています。 AES (Advanced Encryption Standard) は、現在最も一般的に使用されている対称暗号化アルゴリズムの 1 つであり、データの送信および保存時の暗号化保護に広く使用されています。

この記事では、JavaScript を使用して AES 暗号化を実装する方法を詳しく紹介します。

1. AES 暗号化について理解する

AES 暗号化アルゴリズムは対称暗号化アルゴリズムであり、暗号化と復号化に同じキーが使用され、通常は「秘密キー」と呼ばれます。 AES はデータを暗号化および復号化できます。 AES のキーの長さは 128 ビット、192 ビット、または 256 ビットです。異なる長さのキーを使用することにより、異なるレベルのセキュリティを実現できます。

AES 暗号化アルゴリズムは、本質的には、キーと初期化ベクトル (IV) を使用して暗号化または復号化操作を実行し、暗号文または平文を生成する置換および置換暗号化アルゴリズムです。 AES 暗号化アルゴリズムは、電子コードブック (ECB)、暗号ブロック チェーン (CBC)、カウンター モード (CTR) の 3 つのモードに分かれています。この記事では、Advanced Encryption Standard モード (CTR) を使用します。

2. CryptoJS ライブラリの紹介

CryptoJS は、AES 暗号化を含む複数の暗号化アルゴリズムをサポートする強力な JavaScript 暗号化ライブラリです。 AES 暗号化の実装を開始する前に、CryptoJS 暗号化ライブラリを導入する必要があります。 CryptoJS は、JavaScript スクリプト タグを通じて、またはダウンロードした js ファイルを直接使用して導入できます。

AES 暗号化の整合性と実用性を反映するために、ここでは download.min.js を選択して CryptoJS ライブラリを導入します。

<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js"></script>
ログイン後にコピー

3. AES 暗号化の実装

CryptoJS を使用して AES 暗号化を実装するのは非常に簡単で、平文とキーを渡すだけで暗号化された暗号文を取得できます。以下は、CTR モードに基づく AES 暗号化の例です。

/**
 * 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);
}
ログイン後にコピー

上記のコードは、受信した平文とキーをパラメータとして受け取り、ランダム ベクトルを生成し、AES 暗号化に CTR モードを使用し、最後に暗号化された暗号文を追加します。およびベクトルを連結して返します。

4. AES 復号化の実装

CryptoJS を使用して AES 復号化を実装することも同様に簡単です。暗号化された暗号文とキーを渡す限り、復号化された平文を取得できます。

/**
 * 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);
}
ログイン後にコピー

上記のコードは、受信した暗号文とキーをパラメータとして受け取り、暗号文とベクトルを分割し、CTR モードを使用して AES 復号化操作を実行し、最後に復号化された平文を返します。

5. AES 暗号化と復号化のテスト

上記のコードを実装した後、AES 暗号化と復号化テストは次のようになります:

// 初始化密钥
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);
ログイン後にコピー

上記のコードを実行して AES をテストします。暗号化および復号化機能を使用すると、AES で暗号化された暗号文と復号化された平文の出力をコンソールに表示できます。

6. 概要

上記は、JavaScript を使用して AES 暗号化を実装する具体的なプロセスです。 CryptoJS 暗号化ライブラリの助けを借りて、AES 暗号化と復号化を簡単に実装できます。 AES 暗号化アルゴリズムはデータ セキュリティの分野で広く使用されており、データ セキュリティの問題が懸念される場合は、このアルゴリズムを学習して使用し、データ暗号化を実装できます。

以上がJavaScript を使用して AES 暗号化を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート