从配置文件python

时间:2017-12-27 06:01:28

标签: python-3.x config password-encryption

我正在尝试读取存储在配置文件中的加密密码(base 64 + AES编码)。我必须使用有限的库,因为我无法尝试我找到的许多加密方法。

我正在使用的代码是

def encrypt_password():                     # for encryption
    from Crypto.Cipher import AES
    obj = AES.new('This is a key123', AES.MODE_CFB, 'This is an IV456')
    message = "password$1"
    ciphertext = obj.encrypt(message) #ciphertext is the encrypted password

我将密文作为enc_password放在配置文件

用于解密

def decrypt_password():
    from Crypto.Cipher import AES
    cipher_text=RPF.readfromConfigFile('LoginCredentials','enc_password')
    obj2 = AES.new('This is a key123', AES.MODE_CFB, 'This is an IV456')
    message = obj2.decrypt(cipher_text)
    message = message.decode("utf-8")    #gives the decrypted password

我面临的问题是,从配置文件读取时,加密密码被读取为字符串,而它应该是一个字节(我相信)。这是我从配置文件中读取的方式:

if moduleName == 'LoginCredentials':
            import io
            config.read('configuration.INI')
            list_of_variables = [config.get('LoginCredentials', 'url'), config.get('LoginCredentials', 'UserName'),
                                 config.get('LoginCredentials', 'enc_password')] 

希望你们能提供解决方案..     `

1 个答案:

答案 0 :(得分:0)

我没有使用config.ini存储加密密码,而是开始使用.enc文件。

写入enc文件:

    with open('file.enc', 'wb') as f:
    f.write(b'abcdefg')

从enc文件中读取:

    with open("file.enc", "rb") as f:
    iv = f.read(16)

这很有用!!!!