实现密码加密与解密,通常使用的是密码学的加密算法。Python为我们提供了相应的库来进行加密和解密的操作。
首先,我们需要安装Python的加密算法库pyxrypto,可以使用pip命令来安装:
pip install pycrypto
密码加密的实现
在Python中,我们可以使用AES加密算法来加密密码。具体实现过程如下:
from Crypto.Cipher import AES
import base64
def encrypt(data, key):
cipher = AES.new(key.encode("utf-8"), AES.MODE_ECB)
encrypted_data = cipher.encrypt(pad_data(data))
return base64.b64encode(encrypted_data).decode("utf-8")
def pad_data(data):
padding_len = AES.block_size - len(data) % AES.block_size
padding = chr(padding_len) * padding_len
return data + padding.encode("utf-8")
说明:
- 使用AES模式为ECB进行加密。
- 使用填充方式为PKCS7。
- 加密结果以base64方式编码。
以下是一个加密示例:
key = "1234567890123456"
data = "password"
encrypted_data = encrypt(data, key)
print(encrypted_data)
运行结果:
'tSg3bmNOITUDkrDwszKD+w=='
密码解密的实现
一旦我们使用AES算法加密了数据,我们可以使用相同的密钥来解密数据。具体实现过程如下:
def decrypt(encrypted_data, key):
cipher = AES.new(key.encode("utf-8"), AES.MODE_ECB)
decrypted_data = cipher.decrypt(base64.b64decode(encrypted_data))
return unpad_data(decrypted_data).decode("utf-8")
def unpad_data(data):
padding_len = data[-1]
return data[:-padding_len]
说明:
- 使用AES模式为ECB进行解密。
- 使用填充方式为PKCS7。
- 解密结果需进行解填充。
- 密码格式需要编码为utf-8。
以下是一个加密和解密的示例:
key = "1234567890123456"
data = "password"
encrypted_data = encrypt(data, key)
print("Encrypted data: ", encrypted_data)
decrypted_data = decrypt(encrypted_data, key)
print("Decrypted data: ", decrypted_data)
运行结果:
Encrypted data: 'tSg3bmNOITUDkrDwszKD+w=='
Decrypted data: 'password'
注意:加密和解密函数中的密钥请务必妥善保存,并且密钥尽量复杂和随机。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 密码加密与解密的实现 - Python技术站