python使用hashlib如何对数字进行加密以及解密
时间: 2024-03-26 20:39:42 浏览: 11
首先,`hashlib` 模块只能进行单向加密,即不能直接解密。所以,如果需要对数字进行加密和解密,需要使用其他的加密算法,比如对称加密算法。
对称加密算法需要使用一个密钥进行加密和解密,因此需要一个密钥生成器。可以使用 `hashlib` 模块生成一个密钥。以下是一个使用 `hashlib` 模块和 `AES` 对称加密算法对数字进行加密和解密的示例代码:
```python
import hashlib
from Crypto.Cipher import AES
# 待加密的数字
number = 123456
# 使用 hashlib 生成一个密钥
key = hashlib.sha256(b'my secret key').digest()
# 将数字转换为字符串并补足长度
number_str = str(number).zfill(32)
# 创建一个 AES 加密器
cipher = AES.new(key, AES.MODE_ECB)
# 加密
encrypted_number = cipher.encrypt(number_str.encode())
# 解密
decrypted_number_str = cipher.decrypt(encrypted_number).decode().strip('0')
# 将解密后的字符串转换为数字
decrypted_number = int(decrypted_number_str)
print('加密前的数字:', number)
print('加密后的数字:', encrypted_number)
print('解密后的数字:', decrypted_number)
```
注意:这里使用的是 ECB 模式,不够安全。实际使用时需要选择更安全的加密模式,比如 CBC 模式,并且需要在加密数据中添加一个初始化向量(IV)。