概述
hashing_algorithms.py 是一个Python脚本,用于从零开始实现MD5和SHA-1哈希算法。脚本还会根据用户的姓名和学号生成一个特定的标签字符串,并计算该标签字符串的MD5和SHA-1哈希值。最后,它会根据这些哈希值计算出Q值和N值。
功能
- MD5算法实现:从零开始完整实现了MD5哈希算法(遵循RFC 1321标准)。
- SHA-1算法实现:从零开始完整实现了SHA-1哈希算法(遵循FIPS PUB 180系列标准)。
- 标签字符串生成:根据以下格式生成一个唯一的字符串:
"信息与网络安全" + 姓名拼音 + 学号 - 哈希值计算:
- 计算标签字符串的128位MD5哈希值(整数形式和小端十六进制形式)。
- 计算标签字符串的160位SHA-1哈希值(整数形式和大端十六进制形式)。
- Q值计算:
Q = (MD5_hash_integer + SHA_1_hash_integer) mod 2^128 - N值计算:
N = 1 + (Q mod 21)
如何使用
-
修改个人信息: 打开
hashing_algorithms.py文件,找到以下两行代码:student_name = "NAME" student_id = "ID"
-
运行脚本: 在终端或命令行中,导航到脚本所在的目录,然后执行以下命令:
python hashing_algorithms.py
输出结果
脚本执行后,会在终端打印以下信息:
- Tag 字符串: 根据姓名和学号生成的唯一标签字符串。
- Tag 的 MD5 哈希值 (十六进制): 标签字符串的MD5哈希值的32位十六进制表示(小端序)。
- Tag 的 MD5 哈希值 (128位无符号整数): 标签字符串的MD5哈希值的128位无符号整数表示。
- Tag 的 SHA-1 哈希值 (十六进制): 标签字符串的SHA-1哈希值的40位十六进制表示(大端序)。
- Tag 的 SHA-1 哈希值 (160位无符号整数): 标签字符串的SHA-1哈希值的160位无符号整数表示。
- 计算得到的 Q 值: 根据公式计算出的Q值(128位无符号整数)。
- 计算得到的 N 值: 根据公式计算出的N值。