import base64
import sys,os
from Crypto import Random
from Crypto.Cipher import AES
import configparser
file_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 originalPassword
if __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"))