文章目录
一、安装python&使用虚拟环境
参见Arch Linux 定时运行python脚本(crontab)
二、python程序重要参数加密
2.1 非对称加密(RSA)
用某用户密钥加密后所得的信息,只能用该用户的解密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了一对密钥中的一个,并不会危害到另外一个的秘密性质。称公开的密钥为公钥;不公开的密钥为私钥。
参考“公钥加密”
- 生成RSA密钥对
- 私钥存储在服务器上(运维人员做好秘钥管理)
- 公钥公开给开发人员,用于代码中进行重要配置加密
2.2 生成密钥对
安装pycryptodome
pip install pycryptodome
from Crypto.PublicKey import RSA
key = RSA.generate(2048)
private_key = key.export_key()
with open("private.pem", "wb") as f:
f.write(private_key)
public_key = key.publickey().export_key()
with open("public.pem", "wb") as f:
f.write(public_key)
2.4 以连接数据库参数加密为例
【RSA加密/解密】PKCS1_OAEP和PKCS1_v1_5
2.4.1 工具类RSA.py
from Crypto.Cipher import PKCS1_OAEP as PKCS1_cipher
from Crypto.PublicKey import RSA
# 读取密钥
def get_key(path):
with open(path) as f:
pem_data = f.read()
return RSA.importKey(pem_data)
# 公钥加密
def encrypt(msg, pub_path):
key = get_key(pub_path)
cipher = PKCS1_cipher.new(key)
encrypt_msg = cipher.encrypt(msg.encode("utf-8"))
return base64.b64encode(encrypt_msg).decode()
# 私钥加密
def decrypt(msg, pri_path):
key = get_key(pri_path)
cipher = PKCS1_cipher.new