2016-07-31 2 views
-1

У меня есть код Python, как показано ниже:печати пароли в зашифрованном виде в файле журнала

myargs = [param,/PASSWORD="{}",.format(myData['PASSWORD'])] 

Когда я печатаю это в моем файле журнала я использую следующее заявление:

logging.info(myargs) 

Он печатает заявление правильно, что мне нужно, все пароли должны быть напечатаны как XXXX или зашифрованы (base64)

+2

«... или зашифровано (' base64') «Кодирование не шифруется. – DeepSpace

+1

Во-первых, 'base64' не зашифрован, он закодирован. Каждый основной язык программирования будет легко декодировать его, чтобы вы могли распечатать его в виде простого текста. Во-вторых, решение простое, просто не записывайте пароли. Нет причин для этого и делает вас крайне уязвимыми. – IanAuld

+0

@lanAuld Мне нужно зарегистрировать команду как this -cmdparam SQLSVCPASSWORD = XXXXX, AGTSVCPASSWORD = XXXXX, SAPWD = XXXXXX, ConfigurationFile = C: \ abc \ xyz.ini – user1312155

ответ

0

Во-первых, base 64 не зашифрован, i t закодировано. Существует большая разница. Во-вторых, используйте хеширование.

Проверьте модуль hashlib. Существуют различные безопасные алгоритмы хеширования, которые вы можете использовать. SHA1, SHA224, SHA256, SHA384 и SHA512, а также алгоритм RS5 MD5.

Хотя одиночное удаление хэширования небезопасно из-за нападений Rainbow Table. Используйте соление вместе с хешированием, чтобы сделать пароли более безопасными. Короткие реализации этого взяты из here:

import uuid 
import hashlib 

def hash_password(password): 
    # uuid is used to generate a random number 
    salt = uuid.uuid4().hex 
    return hashlib.sha256(salt.encode() + password.encode()).hexdigest() + ':' + salt 

def check_password(hashed_password, user_password): 
    password, salt = hashed_password.split(':') 
    return password == hashlib.sha256(salt.encode() + user_password.encode()).hexdigest() 

new_pass = raw_input('Please enter a password: ') 
hashed_password = hash_password(new_pass) 
print('The string to store in the db is: ' + hashed_password) 
old_pass = raw_input('Now please enter the password again to check: ') 
if check_password(hashed_password, old_pass): 
    print('You entered the right password') 
else: 
    print('I am sorry but the password does not match') 

Кроме того, вы можете использовать WERKZEUG, чтобы помочь вам в этом. This - хороший фрагмент, который вы можете изменить и реализовать.

Смежные вопросы