本文共 1593 字,大约阅读时间需要 5 分钟。
import base64import sys,osfrom Crypto import Randomfrom Crypto.Cipher import AESimport configparserfile_path = os.path.realpath(__file__)bin_path = os.path.split(file_path)[0]base_path = os.path.split(bin_path)[0]con_path = base_path + os.sep + 'config'config=configparser.ConfigParser()config.read(con_path+"/conf.config")# 加密函数def encrypt(originalPassword): bs = AES.block_size pad = lambda s: s + (bs - len(s) % bs) * chr(bs - len(s) % bs) paddPassword = pad(originalPassword) iv = Random.OSRNG.new().read(bs) key = os.urandom(32) cipher = AES.new(key, AES.MODE_CBC, iv) encryptPassword = base64.b64encode(iv + cipher.encrypt(paddPassword) + key) return encryptPassword# 解密函数def decrypt(encryptPassword): base64Decoded = base64.b64decode(encryptPassword) bs = AES.block_size unpad = lambda s: s[0:-s[-1]] iv = base64Decoded[:bs] key = base64Decoded[-32:] cipher = AES.new(key, AES.MODE_CBC, iv) originalPassword = unpad(cipher.decrypt(base64Decoded[:-32]))[bs:] return originalPasswordif __name__ == '__main__':# oracle数据库加密 oraPwd =config.get('targetddb','pass') encryptOraPwd = encrypt(oraPwd) config.set("targetddb", "pass", encryptOraPwd.decode(encoding='UTF-8',errors='strict')) print("The Oracle database password has been encrypted!")# 服务器加密 serPwd = config.get('getfile', 'password') encryptSerPwd = encrypt(serPwd) config.set("getfile", "password", encryptSerPwd.decode(encoding='UTF-8',errors='strict')) print("The server password has been encrypted!") config.write(open(con_path+"/conf.config", "w"))
转载地址:http://zctrn.baihongyu.com/