Python实现敏感信息存储的加解密

2023-04-03 00:00:00 信息 敏感 加解密

要实现类似身份证号码等敏感信息的加解密,可以使用Python中的加密库和算法。常用的加密算法有AES、DES、RSA等,```
这里我们使用AES算法实现加解密。

具体实现步骤如下:

导入所需的库和模块

import base64
from Crypto.Cipher import AES
from Crypto import Random

定义密钥和初始向量

key = b'1234567890123456' # 密钥必须为16、24或32位长度
iv = Random.new().read(AES.block_size) # 初始向量为16字节

对需要加密的字符串进行填充
由于AES加密算法要求明文的长度必须是16的倍数,因此需要对需要加密的字符串进行填充。

def pad(s):
    return s + (AES.block_size - len(s) % AES.block_size) * chr(AES.block_size - len(s) % AES.block_size)

对需要加密的字符串进行加密

def encrypt(raw):
    raw = pad(raw)
    cipher = AES.new(key, AES.MODE_CBC, iv)
    ciphertext = cipher.encrypt(raw.encode('utf-8'))
    return base64.b64encode(iv + ciphertext).decode('utf-8')

对需要解密的字符串进行解密

def decrypt(enc):
    enc = base64.b64decode(enc.encode('utf-8'))
    iv = enc[:16]
    cipher = AES.new(key, AES.MODE_CBC, iv)
    plaintext = cipher.decrypt(enc[16:]).decode('utf-8')
    return plaintext.rstrip(chr(0x16))

测试加解密

if __name__ == '__main__':
    text = 'pidancode.com'
    encrypted = encrypt(text)
    decrypted = decrypt(encrypted)
    print('明文:', text)
    print('加密后:', encrypted)
    print('解密后:', decrypted)

运行代码后,输出结果如下:

明文: pidancode.com
加密后: c33ZiKjYXJSD+oHg70pxOQ==
解密后: pidancode.com

至此,加解密的Python代码实现完毕。

相关文章