作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
下面是我用来将文件转换为字符串然后再转换为 mdf 的函数。我正在输出文件路径和文件名以确保一切正常。有什么我没有考虑到的可以改变文件(实际上是视频 mp4)指纹的东西吗?我正在 ubuntu 上对照 md5sum 检查它。
private static String readFileToString(String filePath)
throws java.io.IOException{
StringBuffer fileData = new StringBuffer(1000);
BufferedReader reader = new BufferedReader(
new FileReader(filePath));
char[] buf = new char[1024];
int numRead=0;
while((numRead=reader.read(buf)) != -1){
String readData = String.valueOf(buf, 0, numRead);
fileData.append(readData);
buf = new char[1024];
}
reader.close();
System.out.println(fileData.toString());
return fileData.toString();
}
public static String getMD5EncryptedString(String encTarget){
MessageDigest mdEnc = null;
try {
mdEnc = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
System.out.println("Exception while encrypting to md5");
e.printStackTrace();
} // Encryption algorithm
mdEnc.update(encTarget.getBytes(), 0, encTarget.length());
String md5 = new BigInteger(1, mdEnc.digest()).toString(16) ;
return md5;
}
最佳答案
字符串不是二进制数据的容器。丢失字节数组和字符串之间的两次转换。您应该以字节形式读取文件并直接以字节计算 MD5。您可以在阅读时这样做:您不需要先阅读整个文件。
而且 MD5 不是加密:它是安全散列。
关于java - 在我通过电子邮件发送给自己后,android 中文件上的 md5 校验和与 md5 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17757353/
我是一名优秀的程序员,十分优秀!