python利用自定义key和一段sha256得到的哈希值生成16位序列码
时间: 2024-10-01 20:02:38 浏览: 31
Python 中可以使用内置的 `hashlib` 模块来计算 SHA-256 哈希值,然后结合自定义的 key 生成 16 字节(也就是 128 位)的哈希结果。为了压缩成 16 位(通常指 2 个字节),你可以选择截取前 16 或者 8 个字节(因为 SHA-256 的默认输出是 32 位二进制),或者采用其他形式的编码,例如 base64 编码后取前两个字符。
以下是一个简单的示例:
```python
import hashlib
import binascii
def generate_sequence_code(key, hash_len=2):
# 对 key 进行 sha256 加密
sha256_hash = hashlib.sha256(key.encode()).digest()
# 截取指定长度的哈希值
if hash_len == 2: # 16位
sequence_code = binascii.hexlify(sha256_hash)[:hash_len * 2] # 转换为16进制字符串
elif hash_len == 1: # 8位
sequence_code = binascii.hexlify(sha256_hash)[:hash_len * 2]
return sequence_code.decode() # 返回字符串形式
# 示例
key = "custom_key"
sequence_code = generate_sequence_code(key)
print(f"Sequence code: {sequence_code}")
```
在这个例子中,`generate_sequence_code` 函数接受一个 `key` 和一个可选参数 `hash_len`,用于指定返回的序列码长度。请注意,如果 `hash_len` 设置为 1,则得到的是 8 位的序列码,而不是 16 位。
阅读全文