工具简介
TIGER是一种由Ross Anderson和Eli Biham在1995年设计的加密哈希函数。它旨在为64位平台提供高效且安全的哈希计算,其设计目标包括高速、高安全性和易于实现。TIGER生成一个192位(24字节)的哈希值,通常表示为48个十六进制数字。它还有两个变体:TIGER/128和TIGER/160,通过截断标准输出来提供不同长度的哈希值。
如何使用本工具
1. 命令行使用
对字符串进行哈希
echo -n "Hello World" | tigerhash对文件进行哈希
tigerhash myfile.txt
创建TIGER哈希对象
tiger_hasher = TIGER.new()
输入数据(必须是字节类型)
message = b"Hello World"
tiger_hasher.update(message)
2.计算并获取十六进制格式的摘要
hash_digest = tiger_hasher.hexdigest()
print(hash_digest) 输出类似:87fb2...(48位十六进制数)
计算字符串的TIGER哈希
const hash = CryptoJS.TIGER("Hello World").toString();
console.log(hash); // 输出48位十六进制哈希值
常见问题(FAQ)
Q1: TIGER和MD5、SHA-1有什么区别?
A: TIGER设计于MD5之后、SHA-1普及之前。它与MD5(128位输出)和SHA-1(160位输出)相比,提供了更长的192位输出,旨在抵抗当时已知的密码学攻击,并在64位架构上拥有更快的速度。然而,像MD5和SHA-1一样,TIGER现在也不再被认为是抗碰撞的,不应用于安全敏感的场景。
Q2: TIGER用于密码存储吗?
A: 绝对不推荐。像TIGER这样的快速哈希函数不适合用于存储密码。它们易于被GPU和专用硬件(ASIC)暴力破解。密码存储应使用**慢哈希函数**,如**bcrypt、Argon2、scrypt或PBKDF2。
Q3: TIGER被破解了吗?
A: TIGER已经发现了理论上的碰撞攻击。虽然在实际中制造碰撞仍然需要相当大的计算努力,但存在已知的攻击方法意味着它已被认为** cryptographically broken**(密码学上被破解),不应再依赖于其抗碰撞性。
Q4: TIGER/128和TIGER/160与TIGER/192是什么关系?
A: TIGER/192是完整版本。TIGER/128和TIGER/160是通过简单地丢弃TIGER/192输出的最后64位或32位来实现的。它们提供更短的摘要,但安全性也相应降低,一般不推荐使用。
注意事项
1. 安全性已过时:TIGER算法目前存在已知的有效碰撞攻击方法。对于任何需要强抗碰撞性的新应用(如数字签名、证书颁发),不应再使用TIGER。应转而使用更现代、更安全的哈希函数家族,如SHA-2(SHA-256, SHA-512)或 SHA-3。
2. 非密码用途:TIGER仍然可以用于非密码学的场景,例如作为文件校验和(确保数据无损传输)或在哈希表中分布键值,前提是这些场景不担心恶意攻击者故意制造哈希碰撞。
3. 版本确认:在使用TIGER时,请注意您使用的是哪个变体(/192, /160, /128),因为不同变体的输出长度和安全性不同,且它们之间的结果不兼容。
4. 兼容性:并非所有加密库都默认支持TIGER算法。在将其集成到项目中之前,请检查您所使用的开发环境是否有可靠的实现。