2016-07-31 7 views
-1

Ich habe ein Python-Code wie unten:Drucken Passwörter wie in Log-Datei verschlüsselt

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

Als ich es in meiner Protokolldatei drucke ich die folgende Anweisung:

logging.info(myargs) 

Er druckt die Aussage richtig, was ich brauche ist alle Passwörter sollten gedruckt werden als XXXX oder verschlüsselt (base64)

+2

"... oder verschlüsselt (' base64') "Die Codierung verschlüsselt nicht. – DeepSpace

+1

Zunächst ist 'base64' nicht verschlüsselt, es ist verschlüsselt. Jede große Programmiersprache wird es leicht entschlüsseln können, so dass Sie es auch im Klartext ausdrucken können. Zweitens ist die Lösung einfach, einfach Passwörter nicht protokollieren. Es gibt keinen Grund dazu und macht Sie extrem verletzlich. – IanAuld

+0

@lanAuld ich muss den Befehl wie folgt -cmdparam schreiben SQLSVCPASSWORD = XXXXX, AGTSVCPASSWORD = XXXXX, SAPWD = XXXXXX, Konfigurationsdatei = C: \ abc \ xyz.ini – user1312155

Antwort

0

Zunächst ist base 64 nicht verschlüsselt, ich t ist codiert. Es gibt einen großen Unterschied. Zweitens, benutze Hashing.

Überprüfen Sie das hashlib Modul. Es gibt verschiedene sichere Hash-Algorithmen, die Sie verwenden können. SHA1, SHA224, SHA256, SHA384 und SHA512 sowie der MD5-Algorithmus von RSA.

Obwohl allein tun Hashing ist nicht sicher wegen Rainbow Table Angriffe. Verwenden Sie Salting zusammen mit Hashing, um die Passwörter sicherer zu machen. Kurze Einführungs davon aus here genommen:

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') 

Auch Sie verwenden werkzeug kann Ihnen dabei zu helfen. This ist ein gutes Snippet, das Sie ändern und implementieren können.