MD5暗号化アルゴリズムの特性と簡単な実装(Java)

MD5暗号化と簡単な実装(Java)

ユーザーアカウントのセキュリティを確保するために、自分の学習プロジェクトでユーザーパスワードの不可逆暗号化を使用する必要があります。この記事を書いて、MD5暗号化アルゴリズムの簡単な実装を記録してください。


MD5とは

MD5は、 Message-Digest Algorithm 5(メッセージダイジェストアルゴリズム5)の略で、完全で一貫性のある情報送信を保証するために使用されます。これは、コンピューターで広く使用されているハッシュアルゴリズムの1つです(翻訳されたダイジェストアルゴリズムとハッシュアルゴリズムでもあります)。主流のプログラミング言語が一般的に使用されています。MD5の実装があります。

ハッシュアルゴリズムの基本原則は、データ(漢字など)を別の固定長値に計算することです。


MD5暗号化の機能

  • 圧縮性:データや文字列などをさまざまな長さで暗号化するために、固定長のMD5暗号化文字列を返すことができます。(通常、32ビットの16進文字列);
  • 暗号化は不可逆的です:暗号化プロセスはほとんど不可逆的です。衝突クラッキングのために巨大なKey-Valueデータベースが維持されない限り、ロックを解除することはほとんど不可能です。
  • 計算が簡単:元のデータからMD5値を計算するのは簡単です。
  • 変更防止:固定文字列の場合。数字など、MD5暗号化後の文字列は固定されています。つまり、MD5が暗号化された回数に関係なく、同じ結果が得られます。また、バイトの1つが変更されると、取得されるMD5値は大きく異なります。
  • 強力な衝突防止:元のデータとそのMD5値を知っていると、同じMD5値を持つデータ(つまり、偽のデータ)を見つけることは非常に困難です。

MD5の上記の特性に基づいて、ユーザーパスワードや不可逆暗号化に適用可能なその他の重要なデータの暗号化処理アルゴリズムとしてよく使用されます


文字列のMD5暗号化

1.シンプルな実装、処理なし

/**
 * 对字符串进行MD5加密
 * @param str 需要进行加密的字符串
 * @return		md5加密后的字符串
 */
public String pwByMD5(String str){
    
    
    try {
    
    
        // 生成一个MD5加密计算摘要
        MessageDigest md = MessageDigest.getInstance("MD5");
        //调用md5函数计算
        md.update(str.getBytes());
        
        /** 
         * digest()最后确定返回md5 hash值,返回值为8位字符串。
         * BigInteger函数则将8位的字符串转换成16位hex值,以字符串表示;
         * 一个byte是八位二进制,即2位十六进制字符(2的8次方等于16的2次方)
         */
        return new BigInteger(1,md.digest()).toString(16);
    } catch (NoSuchAlgorithmException e) {
    
    
        e.printStackTrace();
        return null;
    }
}

上記は、MD5アルゴリズムの簡単な実装と注記です。将来、アルゴリズムのさらに詳細な実装がある場合は、再度更新されます...

おすすめ

転載: blog.csdn.net/weixin_40849588/article/details/98469677
おすすめ