【密码学】基于Java的MD5加密实现方式

本文介绍了MD5的用途,如防止数据篡改和数字签名应用,并详细讲述了在Java中如何实现MD5加密,强调在将字符串转为字节数组时需指定UTF-8编码以确保加密结果的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么是MD5

            MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现(两个MD5值不相同)。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。

2.Java中实现MD5

/**
	 * MD5加密方式(1)
	 * @param message
	 * @return
	 * @throws NoSuchAlgorithmException
	 * @throws UnsupportedEncodingException
	 */
	public static String md5Encode(String message) throws NoSuchAlgorithmException, UnsupportedEncodingException {
		//得到一个信息的摘要器
		MessageDigest digest = MessageDigest.getInstance("MD5");
		byte [] result = digest.digest(message.getBytes("UTF-8"));
		StringBuffer buffer = new StringBuffer();
		//把每一个byte 做一个与运算 0xff
		for(byte b:result) {
			int number = b&0xff;
			String str = Integer.toHexString(number);
			if(str.length()==1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值