计算文件的 MD5,出现错误的结果

1. 运行环境

go 1.23

计算文件的 MD5,出现错误的结果

2. 问题描述?

func Md5File(filePath string, totalSize int64) (result string, err error) {
    config.GVA_LOG.Info("Reading md5 of file", zap.Any("path", filePath))
    var file *os.File
    if file, err = os.Open(filePath); err != nil {
        return
    }
    defer file.Close()

    hash := md5.New()
    var written int64
    if written, err = io.Copy(hash, file); err != nil {
        return
    }
    if written != totalSize {
        err = errors.New(fmt.Sprintf("file size [%d] is not equal, should be %d ", written, totalSize))
        return
    }
    return hex.EncodeToString(hash.Sum(nil)), nil
}

使用 md5sum 可以输入正确的 MD5 值

计算文件的 MD5,出现错误的结果

3. 您期望得到的结果?

  1. 正常输出 MD5 值
  2. 输出的 MD5 值正确

4. 您实际得到的结果?

  1. 正常输出 MD5 值
  2. 输出的 MD5 值不正确
讨论数量: 1

计算文件需要把文件分块读取后写入到md5流里面,不能读取后就写入

3小时前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!