Md5加密算法

本文介绍了MD5算法,它是散列算法而非加密算法,不可逆,不同内容产生相同MD5值概率极低。可用于保存用户密码MD5值保障安全,还能计算文件MD5值检验文件是否被篡改。同时说明了计算字符串MD5值的步骤。

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

MD5算法是一种散列(hash)算法(摘要算法,指纹算法),不是一种加密算法(易错)。任何长度的任意内容都可以用MD5计算出散列值。

介绍工具:CalcMD5.zip。 MD5算法不可逆,也就是只能得到内容对应的MD5值,无法由MD5值反推内容。对于不同的内容产生相同MD5值的概率非常非常非常低!

Password字段保存用户输入密码的MD5值,这样系统管理员、黑客也不知道用户的密码是什么,也就避免了用户的其他系统密码被利用的问题(思考:密码明文存储有哪些缺点?)。

判断密码正确性的方法:计算用户输入的密码的MD5值,与数据库存储的MD5值进行比较,如果相等则认为密码正确。为什么很多网站只有密码重置,没有找回原密码功能?。

应用:计算文件的MD5值来检验文件没有被篡改过。

1、MD5算法不是一种加密算法。因为有加密就有解密,而MD5算法算出来的值是不能解密的,也就是说MD5没有解密。是算法但不是加密算法。不管明文长度是多少,经过MD5算法计算后得到的MD5值长度都是固定的。

2、MD5算法不仅可以计算一个字符串的MD5值,还可以计算一个文件的MD5值。

1.获取信息摘要对象:md5

通过信息摘要单例的构造函数获取:

MessageDigest md5 = MessageDigest.getInstance(“MD5”);
1
2
2.信息摘要对象是对字节数组进行摘要的,所以先获取字符串的字节数组.

byte[] bytes = str.getBytes();
1
2
3.信息摘要对象对字节数组进行摘要,得到摘要字节数组:

byte[] digest = md5.digest(bytes);
1
2
4.把摘要数组中的每一个字节转换成16进制,并拼在一起就得到了MD5值.
(PS,有些转换过来得到的是前面有6个f的情况,如:ffffff82,这是因为前面有6组4个1,所以提前把这6组1111先变成0就好了,然后再转16进制就没有f了)
(其实也可以在后面续把f去掉)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值