ホームページ >ウェブフロントエンド >フロントエンドQ&A >JavaScript の不可逆暗号化アルゴリズム

JavaScript の不可逆暗号化アルゴリズム

WBOY
WBOYオリジナル
2023-05-22 11:11:36814ブラウズ

インターネット技術の継続的な発展に伴い、データセキュリティの問題はインターネットアプリケーションにおいて徐々に重要な問題になってきました。その中でも、暗号化は一般的に使用されるデータ セキュリティ保護方法です。ブラウザ側で実行されるスクリプト言語として、JavaScript が暗号化に使用されることが増えています。この記事では、JavaScript の不可逆暗号化アルゴリズム、つまりハッシュ関数を紹介します。

1. ハッシュ関数とは何ですか?

ハッシュ関数は、ハッシュ関数とも呼ばれ、任意の長さのメッセージを特定の固定長のメッセージ ダイジェストに圧縮する関数です。これは、暗号化、暗号化、データ整合性チェックなどの分野で一般的に使用されます。ハッシュ関数の基本的な考え方は、入力データを固定長のハッシュ値に変換し、入力データが変更されるとハッシュ値も変更されるようにすることです。

ハッシュ関数の特徴は、不可逆性、一意性、固定長、高効率です。不可逆とは、ハッシュ値から元のデータを推定できないことを意味します。固有とは、異なる元のデータから異なるハッシュ値が生成されることを意味します。固定長とは、メッセージの長さは異なりますが、ハッシュ値の長さは同じであることを意味します。効率には、ハッシュ関数が必要です。ハッシュ値を短時間で計算できます。

2. JavaScript のハッシュ関数

JavaScript で最も一般的なハッシュ関数は MD5 と SHA-1 です。どちらも、任意の長さのデータを 128 ビットまたは 160 ビットのハッシュ値に圧縮できます。ただし、MD5 と SHA-1 にはいくつかの脆弱性があるため、その安全性が疑問視されています。

したがって、データ セキュリティ要件が比較的高い状況では、SHA-256 や SHA-512 などのより安全なハッシュ関数を使用できます。 SHA-256 は任意の長さのメッセージを 256 ビットのハッシュ値に圧縮でき、SHA-512 は任意の長さのメッセージを 512 ビットのハッシュ値に圧縮できます。

以下では、SHA-256 を例として、JavaScript での暗号化にハッシュ関数を使用する方法を示します。

3. JavaScript での SHA-256 アルゴリズムの使用

JavaScript では、暗号ライブラリの crypto.subtle.digest() 関数を使用して SHA-256 ハッシュ関数を計算できます。この関数は、処理されるデータの型と値をパラメータとして受け取り、Promise オブジェクトを返します。その結果は、ハッシュ値の ArrayBuffer 形式のデータです。

以下は、SHA-256 アルゴリズムを使用して暗号化されたサンプル コードです:

async function sha256(message) {
  const msgBuffer = new TextEncoder().encode(message);                   
  const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);     
  const hashArray = Array.from(new Uint8Array(hashBuffer));                
  const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
  return hashHex;
}

console.log(await sha256('hello, world')); 
// 输出:b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

コードでは、async/await 構文シュガーを使用して、Promise オブジェクトの戻り結果を処理します。まず、TextEncoder を使用して処理対象のメッセージをエンコードし、ArrayBuffer 形式のデータに変換します。次に、crypto.subtle.digest() 関数を使用してメッセージのハッシュ値を計算し、Uint8Array の形式でハッシュ値を取得します。最後に、それを 16 進形式の文字列に変換します。

4. 概要

ハッシュ関数は重要な不可逆暗号化アルゴリズムであり、JavaScript でも広く使用されています。ハッシュ関数を使用すると、データのセキュリティを効果的に保護でき、暗号化、認証、デジタル署名などの分野で重要な用途に使用されます。ハッシュ関数を選択するときは、より優れたデータ セキュリティ保護を実現するために、さまざまなアプリケーション シナリオに従って適切なアルゴリズムを選択する必要があります。

以上がJavaScript の不可逆暗号化アルゴリズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。