我正在使用 powershell 中的几种不同算法检查文件哈希。当我使用 MacTripleDes 时,我总是得到不同的哈希值。所有其他的,如 SHA256 或 MD5 总是给出可靠的答案。您可以在自己的计算机上复制该问题:
"this is a test" | out-file test.txt
get-filehash test.txt -algorithm sha256
get-filehash test.txt -algorithm sha256
get-filehash test.txt -algorithm mactripledes
get-filehash test.txt -algorithm mactripledes
前两个散列得到相同的散列值,但后两个散列得到不同的值。MacTripleDes 应该以不同的方式使用吗?
Algorithm Hash Path
--------- ---- ----
SHA256 3F8CB2CDF03347329CAB0C80A6CE3B01EF3B17AF02E0F6E101FA67CE63729F51 C:\temp\test.txt
SHA256 3F8CB2CDF03347329CAB0C80A6CE3B01EF3B17AF02E0F6E101FA67CE63729F51 C:\temp\test.txt
MACTRIPLEDES 904D74A529C7A739 C:\temp\test.txt
MACTRIPLEDES AF720778A2C878A2 C:\temp\test.txt
MACTripleDES 不同于
Get-FileHash
cmdlet 提供的其他算法。老实说,我不确定它为什么包含在 cmdlet 中。它不适合其他人,IMO。SHA1、SHA256、MD5、RIPEMD等,这些都是常规的哈希函数。他们获取一些任意长度的数据并创建代表该数据的固定长度摘要。MACTripleDES 是不同的,因为它不仅仅是一个散列算法。它的名称中有 TripleDES,3DES 是一种加密算法,而不是散列算法。散列函数和加密函数的最大区别在于加密可以用密钥反转。哈希是单向函数。
MAC代表消息认证码。这是用于验证消息的代码。以验证它没有被篡改。MAC 被设计为从一条消息到另一条消息是短暂的或唯一的。
查看构造函数:
StaticRandomNumberGenerator 生成随机数...随机数意味着每次运行的结果都会不同。