具体来说文件的MD5值就像是这个文件的"数字指纹"。
每个文件的MD5值是不同的,如果任何人对文件做了任何改动,其MD5值也就是对应的"数字指纹"就会发生变化。
文件的MD5值是根据文件的内容(二进制内容)来决定的,而不是根据文件名或其他元数据。MD5是一种散列函数,它将任意长度的“字节串”映射为一个固定长度的大数,并且设计者寄希望于它无法逆向生成,也就是所谓的“雪崩效应”。具体来说,MD5算法会对文件的内容进行一系列的位操作和数学计算,最终生成一个唯一的128位哈希值。
当你更改文件的名称时,实际上只是改变了文件的元数据,即文件在文件系统中的标识信息,而文件的内容并没有发生变化。因此,文件的MD5值也不会改变。MD5算法对文件内容的每一个字节都很敏感,即使只改动文件中的一个字节,也会导致MD5值发生显著的变化。但是,如果仅仅是改变文件名、文件的创建时间或修改时间等元数据,而不改变文件的内容,那么文件的MD5值将保持不变。
linux计算md5值:
md5sum <file path>
PowerShell计算:
function Get-FileMd5 {
param (
[Parameter(Mandatory = $true)]
[string]$FilePath
)
$md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
$fileStream = ([System.IO.File]::OpenRead($FilePath))
$hashBytes = $md5.ComputeHash($fileStream)
$fileStream.Dispose()
$hashString = [System.BitConverter]::ToString($hashBytes).Replace('-', '').ToLowerInvariant()
return $hashString
}
# 使用示例
$filePath = "C:\path\to\your\file.txt"
$md5Hash = Get-FileMd5 -FilePath $filePath
Write-Host "MD5 Hash of the file: $md5Hash"
