初识MD5

首先来了解一下什么是MD5
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
它是单向的加密算法,明文可以变成密文,但是通过密文无法解密成明文。
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据是非常困难的。
一般用途:
一般用于加密用户密码,请求参数,文件校验等
本篇文章将从java代码上开始让你了解MD5加密
正所谓加密,打个比方,用户登录输入密码,服务端将拿到从客户端传来的密文去和数据库中的数据对比,如果成功,将会返会成功信息。但如果用户的密码忘记了,选择找回密码时,一般都会让用户重新输入密码,这是为什么呢?为什么后台管理员不可以直接将密码告诉用户呢?
就是为了客户信息的安全性,管理员也不知道密码,因为他不能把密文解密成明文。这也极大的增强了信息的安全性。
那么让我们开始了解一下吧!

/**
这是一个加密Util
*/
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Util {
/**
 * MD5加密
 * @param pass
 * @return
 */
	public static String md5pass(String pass) {
		try {
			MessageDigest md = MessageDigest.getInstance("md5");
			byte[] res = md.digest(pass.getBytes());
			StringBuffer buffer = new StringBuffer();
			for(byte b :res) {
				int num = b &0xff;
				String str = Integer.toHexString(num);
				if(str.length() == 1) {
					buffer.append("0");
				}
				buffer.append(str);
			}
			return buffer.toString();
		} catch (NoSuchAlgorithmException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return "";
		}	
	}
}

这里需要用到一个MessageDigest类,也不用单独导包。
MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。

下面是一个测试类
这里比如“123456”就是密码,通过调用MD5Util的md5pass方法,可以将密码加密成密文。

public class Md5Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String pass = "123456";
		System.out.println(MD5Util.md5pass(pass));
	}

}

一般在使用的时候,这些加密方法应该放在客户端,客户端只需要传递密文给服务端,服务端去数据库校验即可。
可以通过下面两个网址来查看MD5的加密和解密数据
MD5在线加密/解密
MD5在线加密

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值