Java MD5 や SHA256 などの一般的な暗号化アルゴリズム

序文

プロジェクト開発を行うjava場合、フロントエンドとバックエンドのインターフェイス分離モードでは、インターフェイス情報の暗号化、署名認証、ユーザーのログイン情報とパスワードのデータ暗号化も必要です。信息加密現在、ほぼすべてのプロジェクトで使用する必要がある技術です。暗号化アルゴリズムは、本人認証、シングル サインオン、情報通信、決済トランザクションなどのシナリオでよく使用されます。いわゆる暗号化アルゴリズムは、元の平文を平文に変換することです。 aを暗号文に変換します。

  1. BASE厳密には、暗号化アルゴリズムではなく、符号化形式に属します
    MD(メッセージダイジェストアルゴリズム、情報ダイジェストアルゴリズム)
    SHA(セキュアハッシュアルゴリズム、セキュアハッシュアルゴリズム)
    HMAC(ハッシュメッセージ認証コード、ハッシュメッセージ認証コード)

  2. 暗号化アルゴリズムではSHA1、SHA-224、SHA-256、SHA-384、 、 、 SHA-512および を総称して暗号化アルゴリズムと呼ぶことができます。SHA-224、SHA-256、SHA-384SHA-512SHA2

  3. SHA暗号化アルゴリズムの安全性は、暗号化アルゴリズムの安全性よりもMD5高くなりますの数字は暗号化された文字列の長さを示し、デフォルトでは1 ビットの情報ダイジェストが生成されます。SHA2SHA1SHASHA1160

MD5

MD5 メッセージ ダイジェスト アルゴリズム (英語: MD5 Message-Digest Algorithm) は、広く使用されている暗号化ハッシュ関数であり、情報伝送の完全な一貫性を確保するために使用される 128 ビット (16 バイト) のハッシュ値 (ハッシュ値) を生成できます。

MD5 アルゴリズムには次の特徴があります。

  1. 圧縮率: データ長に関係なく、計算された MD5 値は同じ長さになります。

  2. 計算の容易さ: 元のデータから MD5 値を簡単に計算できます。

  3. 改ざん耐性:1バイト改ざんしても計算されるMD5値は大きく異なる

  4. 衝突防止: データと MD5 値がわかっているため、同じ MD5 値を持つ元のデータが見つかる確率は低いです。

正確に言うと、MD5 は暗号化アルゴリズムではなくダイジェスト アルゴリズムであり、平文を平文に変換できない 128 ビット文字列として出力できます。インターネット上の一部の MD5 復号 Web サイトは、一部の文字列に対応する md5 文字列のみを保存し、記録された md5 文字列から元のテキストを見つけます。

私が行ったいくつかのプロジェクトでは、暗号化にMD5が使用されている場面をよく見かけます。たとえば、パスワード暗号化の場合、パスワードを生成した後、MD5 を使用して 128 ビット文字列を生成し、データベースに保存します。ユーザーがパスワードを入力すると、最初に MD5 文字列も生成され、データベース内で比較されます。したがって、平文のパスワードはまったく保存されないため、パスワードを取得するときに元のパスワードを取得することはできません。

SHAシリーズ

  1. セキュア ハッシュ アルゴリズム(英語: Secure Hash Algorithm、略称 SHA)は、暗号ハッシュ関数のファミリーであり、FIPS によって認定されたセキュア ハッシュ アルゴリズムです。デジタル メッセージに対応する固定長の文字列 (メッセージ ダイジェストとも呼ばれる) を計算できるアルゴリズム。また、入力メッセージが異なる場合、それらは異なる文字列に対応する可能性が高くなります。
  2. 2005 年 8 月 17 日の CRYPTO カンファレンスの終わりに、Wang Xiaoyun、Yao Qizhi、Yao Chufeng は、計算量の 2 の 63 乗以内で衝突を検出できる、より効率的な SHA-1 攻撃手法を再度発表しました。

つまり、SHA-1暗号アルゴリズムにはごくわずかではありますが衝突の可能性があります。

HMAC

  1. HMAC は、Key- Associated Hash Operation Message Authentication Code (Hash-based Message Authentication Code) の略称で、1996 年に H. Krawezyk、M. Bellare、R. Canetti によって提案され、ハッシュ関数と鍵に基づいて公開された認証方式です。 1997 年に RFC2104 として規格化され、SSLIPSec や などの他のネットワーク プロトコルで広く使用され、現在では事実上のインターネット セキュリティ標準となっています。任意の反復ハッシュ関数とバンドルできます。
  2. HMAC アルゴリズムは一種のようなものであり加密算法密钥そのセキュリティは使用されるハッシュ アルゴリズムに完全に依存しなくなりました。

これを使用する場合は加密、SHA256、SHA384、SHA512 および HMAC-SHA256、HMAC-SHA384、HMAC-SHA512 アルゴリズムを使用することをお勧めします。

対称暗号化アルゴリズム

  1. 対称暗号化アルゴリズムは以前のアルゴリズムであり、データの暗号化と復号化に同じ鍵が使用されるため、鍵管理が困難になります。一般的な対称暗号化アルゴリズムには次のものがありますDES、3DES、AES128、AES192、AES256(デフォルトでインストールされる JDK はまだ AES256 をサポートしていません。jce1.7、jce1.8 をアップグレードするには、対応する jce パッチをインストールする必要があります)。AES の後ろの数字はキーの長さを表します。対称暗号化アルゴリズムのセキュリティは比較的低く、より適用可能なシナリオはイントラネット環境での暗号化と復号化です。

  2. いわゆる対称暗号化とは、鍵で暗号化した後に渡すことができることを意味します密钥解密私が連絡を取ったある国有企業は現在、AES社内で統合ログインを導入しています。サードパーティシステムはユーザー情報を受信するためのインターフェースを提供し、国有企業はユーザー情報をAESで暗号化してこのインターフェースを通じてサードパーティシステムに送信し、サードパーティシステムは自らログイン操作を実現する。ここで、リスクが密钥丢失ある場合、キーは非常に重要であることに注意してください。信息泄漏

暗号化ソルト

  1. 暗号化されたソルトもよく聞く概念で、暗号化のために暗号化された文字列と連結するために使用されるランダムな文字列です。

  2. ソルティングは主に、暗号化された文字列にセキュリティを提供するために使用されます。ソルトを付加した後に暗号化された文字列があった場合、ハッカーはその暗号化された文字列を何らかの手段で利用し、彼が取得する平文は暗号化する前の文字列ではなく、暗号化前の文字列とソルトを組み合わせた文字列となるといわれています。文字列のセキュリティ。

オンライン暗号化されたウェブサイト

  1. ウェブマスターツール
  2. オンライン暗号化
  3. Java は暗号化および復号化ツールのクラスを開発し、私の記事を参照してください

要約する

推奨される暗号化アルゴリズムは次のとおりです。

  1. 不可逆暗号化: SHA256、SHA384、SHA512 および HMAC-SHA256、HMAC-SHA384、HMAC-SHA512

  2. 対称暗号化アルゴリズム:AES、3DES

  3. 非対称暗号化アルゴリズム: RSA

参考

  1. 一般的に使用される暗号化アルゴリズム
  2. 最も一般的に使用される 5 つの Java 暗号化アルゴリズムの分析
  3. https://juejin.cn/post/6844903638117122056#Heading-3

おすすめ

転載: blog.csdn.net/u011738045/article/details/120551399