MD5暗号化ユーティリティファイル---Java暗号化とパスワードの適用

MD5Util.java

[注: これはシャン シリコン バレーでの Java の教えから来ており、ここにメモとして記録されています]

package com.atguigu.atcrowdfunding.util;

import java.security.MessageDigest;

/**
 * MD5算法 哈希算法 MD5算法具有以下特点: 1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。 2、容易计算:从原数据计算出MD5值很容易。
 * 3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
 * 4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
 */
public class MD5Util {
    
    
	public static String digest16(String inStr) {
    
    
		return digest(inStr, 16);
	}

	public static String digest(String inStr) {
    
    
		return digest(inStr, 32);
	}

	private static String digest(String inStr, int rang) {
    
    
		MessageDigest md5 = null;
		if (StringUtil.isEmpty(inStr)) {
    
    
			return "";
		}

		try {
    
    
			md5 = MessageDigest.getInstance("MD5"); // 鍙栧緱绠楁硶
		} catch (Exception e) {
    
    
			e.printStackTrace();
			return "";
		}

		char[] charArray = inStr.toCharArray();
		byte[] byteArray = new byte[charArray.length];

		for (int i = 0; i < charArray.length; i++) {
    
    
			byteArray[i] = (byte) charArray[i];
		}

		byte[] md5Bytes = md5.digest(byteArray); // 鍔犲瘑

		StringBuilder hexValue = new StringBuilder();

		for (int i = 0; i < md5Bytes.length; i++) {
    
    
			int val = ((int) md5Bytes[i]) & 0xff;
			if (val < 16)
				hexValue.append("0");
			hexValue.append(Integer.toHexString(val));
		}
		if (rang == 32) {
    
    
			return hexValue.toString();
		} else {
    
    
			return hexValue.toString().substring(8, 24);// 杞崲涓�32浣嶅瓧绗︿覆
		}
	}

	public static void main(String args[]) {
    
    
		String s = new String("123");
		System.out.println(digest(s));
	}
}

サービス層がパスワードを判定する

  • 上記のユーティリティ ツールのダイジェスト メソッドを使用して、クライアント パスワードの MD5 暗号文を生成し、データベースに保存されている暗号文と比較します。
  • MD5Util.digest(userpswd)

		if (!admin.getUserpswd().equals(MD5Util.digest(userpswd))) {
    
     
			throw new LoginException(Const.LOGIN_USERPSWD_ERROR);
		}

おすすめ

転載: blog.csdn.net/weixin_42692989/article/details/122270626