在我通过电子邮件发送给自己后,android中的md5校验和与md5不匹配

Dam*_*ski 2 java android checksum md5

我用来将文件转换为字符串然后转换为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;
}
Run Code Online (Sandbox Code Playgroud)

use*_*421 5

String不是二进制数据的容器.丢失字节数组和字符串之间的两次转换.您应该将文件作为字节读取并直接在字节中计算MD5.您可以在阅读时执行此操作:您无需先读取整个文件.

MD5不是加密:它是一个安全的哈希.