JavaScriptを使用したデータの暗号化と復号化

王林
リリース: 2023-06-15 20:55:27
オリジナル
4731 人が閲覧しました

ネットワーク情報の時代において、データセキュリティはあらゆる階層が真剣に注意を払い、注意を払わなければならない問題となっています。データ暗号化テクノロジーは、データ セキュリティの分野で重要な役割を果たし、ユーザーの機密情報を効果的に保護し、権限のない者によるデータのアクセスや盗難を確実に防ぐことができます。この記事では、JavaScript を使用してデータの暗号化と復号化を実装し、データのセキュリティを確保する方法を紹介します。

1. データ暗号化技術の概要

データ暗号化とは、元のデータを一定のアルゴリズムで変換し、変換後のデータを直接読み取って理解できないようにすることを指します。データは特定のキーを使用してのみ復号化できるため、データの機密性とセキュリティが保護されます。

一般的なデータ暗号化アルゴリズムには、対称暗号化アルゴリズムと非対称暗号化アルゴリズムが含まれます。

対称暗号化アルゴリズムとは、暗号化と復号化に同じキーを使用するアルゴリズムを指します。一般的な対称暗号化アルゴリズムには、DES、3DES、AES などが含まれます。

非対称暗号化アルゴリズムとは、暗号化と復号化に異なるキーを使用するアルゴリズムを指します。一般的な非対称暗号化アルゴリズムには、RSA、DSA などが含まれます。

データの安全な送信を実現するために、実際のアプリケーションではハイブリッド暗号化メカニズムがよく使用されます。つまり、非対称暗号化アルゴリズムを使用して対称キーを送信し、次に対称暗号化アルゴリズムを使用して対称キーを送信します。メッセージデータを暗号化します。

2. JavaScript を使用してデータ暗号化を実装する

Web 開発では、JavaScript はクライアント上で実行できる一般的なプログラミング言語であるため、JavaScript を通じてデータ暗号化機能を実装できます。

JavaScript では、CryptoJS を使用して標準のデータ暗号化と復号化を実装できます。 CryptoJS は純粋な JavaScript で書かれた暗号化ライブラリであり、AES、DES、SHA1、SHA256 などのさまざまな暗号化およびハッシュ アルゴリズムをサポートします。

  1. AES アルゴリズムを使用してデータを暗号化する

AES 暗号化に CryptoJS を使用する場合は、まず CryptoJS をページに導入し、次にそれが提供する API 関数を使用して暗号化する必要があります。データと復号化。

次のコードは、AES 暗号化に CryptoJS を使用する方法を示しています。

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

<script>
// 加密数据
function encryptByAES(message, keyStr) {

  var key = CryptoJS.enc.Utf8.parse(keyStr);

  var encryptedData = CryptoJS.AES.encrypt(message, key, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
  });

  return encryptedData.toString();
}

// 解密数据
function decryptByAES(ciphertext, keyStr) {

  var key = CryptoJS.enc.Utf8.parse(keyStr);

  var decrypt = CryptoJS.AES.decrypt(ciphertext, key, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
  });

  return decrypt.toString(CryptoJS.enc.Utf8);
}

// 测试代码
var myMessage = "Hello World!";
var myKey = "1234567890123456";

var ciphertext = encryptByAES(myMessage, myKey);
console.log("加密后的数据:" + ciphertext);

var plaintext = decryptByAES(ciphertext, myKey);
console.log("解密后的数据:" + plaintext);
</script>
ログイン後にコピー

上記のコードでは、CryptoJS が提供する関数を使用して AES 暗号化と復号化を実装します。モード値は、暗号化モードとパディング 値はパディング方法を示します。

  1. RSA アルゴリズムを使用してデータを暗号化する

CryptoJS を RSA 暗号化に使用する場合は、最初に RSA キー ペアを生成し、次に公開キーを使用してデータを暗号化する必要があります、秘密キーを使用してデータを暗号化し、キーを使用してデータを復号化します。

次のコードは、CryptoJS を RSA 暗号化に使用する方法を示しています。

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

<script>
// 生成RSA密钥对
var keyPair = CryptoJS.lib.CipherParams.create({
  ciphertext: CryptoJS.enc.Hex.parse("<public key>")
});

// 加密数据
function encryptByRSA(message, publicKey) {

  var key = CryptoJS.lib.CipherParams.create({
    ciphertext: CryptoJS.enc.Hex.parse(publicKey)
  });

  var encryptedData = CryptoJS.AES.encrypt(message, key, {
    mode: CryptoJS.mode.ECB
  });

  return encryptedData.toString();
}

// 解密数据
function decryptByRSA(ciphertext, privateKey) {

  var key = CryptoJS.lib.CipherParams.create({
    ciphertext: CryptoJS.enc.Hex.parse(privateKey)
  });

  var decrypt = CryptoJS.AES.decrypt(ciphertext, key, {
    mode: CryptoJS.mode.ECB
  });

  return decrypt.toString(CryptoJS.enc.Utf8);
}

// 测试代码
var myMessage = "Hello World!";
var myPublicKey = "<public key>";
var myPrivateKey = "<private key>";

var ciphertext = encryptByRSA(myMessage, myPublicKey);
console.log("加密后的数据:" + ciphertext);

var plaintext = decryptByRSA(ciphertext, myPrivateKey);
console.log("解密后的数据:" + plaintext);
</script>
ログイン後にコピー

上記のコードでは、最初に RSA キー ペアを生成し、公開キーを使用してデータと秘密キーを暗号化しました。データを復号化するためのキー。

3. 結論

この記事では、JavaScript を使用してデータの暗号化と復号化を実装し、暗号化を通じてユーザーの機密情報を保護し、データ セキュリティを確保する方法を紹介します。 CryptoJS ライブラリを使用して、AES、RSA などのさまざまな暗号化および復号化アルゴリズムを実装できます。データのセキュリティを保護するには、Web アプリケーションで暗号化テクノロジを広く使用して、ユーザーのプライバシーとデータのセキュリティを保護する必要があります。

以上がJavaScriptを使用したデータの暗号化と復号化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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