MD5---Security加密

MD5的加密

import java.security.MessageDigest;

public class MD5 {

public static void main(String[] args) {
	String pwd = getMD5("99991");
	System.out.println(pwd);
}

//生成MD5
public static String getMD5(String message) {
	String md5 = "";
	try {
		MessageDigest md = MessageDigest.getInstance("MD5");  // 创建一个md5算法对象
		byte[] messageByte = message.getBytes("UTF-8");
		byte[] md5Byte = md.digest(messageByte);              // 获得MD5字节数组,16*8=128位
		md5 = bytesToHex(md5Byte);                            // 转换为16进制字符串
	} catch (Exception e) {
		e.printStackTrace();
	}
	return md5;
}

// 二进制转十六进制
public static String bytesToHex(byte[] bytes) {
	StringBuffer hexStr = new StringBuffer();
	int num;
	for (int i = 0; i < bytes.length; i++) {
		num = bytes[i];
		if(num < 0) {
			num += 256;
		}
		if(num < 16){
			hexStr.append("0");
		}
		hexStr.append(Integer.toHexString(num));
	}
	return hexStr.toString().toUpperCase();
}

}
MD5的加密方法:弊端,同一个密码的加密后结果是一样的,可以通过枚举测试等方法进行破解
String password = MD5.getMD5(user.getPassword());
user.setPassword(password);


Spring-Security的内置加密-----BCryptPasswordEncoder

passwordEncoder.encode(user.getPassword())

密码转换结果
123123----$2a$10$3npZGln1MQZEAGK0pvVWTeZ3q.jb3JX.arG.F.PE4hNpdnPDaB8ci


使用security的passwordEncoding方式登录

	***配置加密类必须在设置加密登录之后进行配置***
	
	<security:authentication-manager>
        <!--指定用户和密码的提供者-->
        <security:authentication-provider user-service-ref="userService">
				<!--不设置加密密码
					<security:authentication-provider>
					<security:user-service>
						&lt;!&ndash;
						在内存中配置链式的账号密码
						{noop}不使用加密
						authorities:角色,认证的角色必须是一个用户
						&ndash;&gt;
						<security:user name="admin" password="{noop}admin" authorities="ROLE_USER"/>
					</security:user-service>
				</security:authentication-provider>-->
            <!--配置使用加密方式启动-->
            <security:password-encoder ref="passwordEncoding" />
        </security:authentication-provider>
    </security:authentication-manager>
	
<!--配置加密类-->
<bean id="passwordEncoder"
class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值