Java计算md5时字段格式有影响吗?

Java计算md5时字段格式有影响吗?,第1张

Java计算MD5时,字段格式会对结果产生影响。具体的影响取决于MD5算法本身。

MD5算法是将任何长度的“消息”作为输入,经过处理后生成一个128位长度的“消息摘要”。因此,“消息”中的任何细微差别都会导致计算MD5的结果发生显著变化。

在Java中,可以通过java.security.MessageDigest类计算MD5。该类的update()方法可用于添加数据到MessageDigest对象以进一步处理。

因此,如果在计算MD5之前更改了数据的格式(例如,更改大小写、添加空格、更改编码等),则计算出的MD5值将是不同的。因此,确保输入数据的格式是与目标MD5值相同的是很关键的。

MD5是常用的一种加密方式,原数据加过加密算法后的得到的数据就是MD5值

用户的密码很多是以MD5值(或类似的其它算法)的方式保存的,这样即使数据库被侵入,也不能直接得到用户的原始密码

package cdm

import java.io.File

import java.io.FileInputStream

import java.io.FileNotFoundException

import java.io.IOException

import java.math.BigInteger

import java.nio.MappedByteBuffer

import java.nio.channels.FileChannel

import java.security.MessageDigest

import org.apache.commons.codec.digest.*

import org.apache.commons.io.IOUtils

public class testMD5 {

public static String getMd5ByFile(File file) throws FileNotFoundException {

String value = null

FileInputStream in = new FileInputStream(file)

try {

MappedByteBuffer byteBuffer = in.getChannel().map(FileChannel.MapMode.READ_ONLY, 0, file.length())

MessageDigest md5 = MessageDigest.getInstance("MD5")

md5.update(byteBuffer)

BigInteger bi = new BigInteger(1, md5.digest())

value = bi.toString(16)

} catch (Exception e) {

e.printStackTrace()

} finally {

if(null != in) {

try {

in.close()

} catch (IOException e) {

e.printStackTrace()

}

}

}

return value

}

public static void main(String[] args) throws IOException {

String path="E:\文件.zip"

String v = getMd5ByFile(new File(path))

System.out.println("MD5:"+v.toUpperCase())

FileInputStream fis= new FileInputStream(path)

String md5 = DigestUtils.md5Hex(IOUtils.toByteArray(fis))

IOUtils.closeQuietly(fis)

System.out.println("MD5:"+md5)

//System.out.println("MD5:"+DigestUtils.md5Hex("WANGQIUYUN"))

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7949686.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存