2016-07-31 8 views
-1

私はPythonのコード下記のように持っています正しく、私が必要とするのは、すべてのパスワードがXXXXまたは暗号化されたものとして印刷されるべきです。(base64)印刷パスワードなど

+2

"...または暗号化(' base64') "エンコーディングは暗号化ではありません。 – DeepSpace

+1

まず、 'base64'は暗号化されておらず、エンコードされています。すべての主要なプログラミング言語は簡単に解読できるので、プレーンテキストで印刷することもできます。第二に、ソリューションはシンプルで、単にパスワードを記録しないでください。そうする理由はなく、あなたは非常に脆弱です。 – IanAuld

+0

@lanAuldこのようなコマンドをログに記録する必要があります。-cmdparam SQLSVCPASSWORD = XXXXX、AGTSVCPASSWORD = XXXXX、SAPWD = XXXXXX、ConfigurationFile = C:\ abc \ xyz.ini – user1312155

答えて

0

最初に、base 64は暗号化されていません。 tはエンコードされます。大きな違いがあります。次に、ハッシングを使用します。

hashlibモジュールをチェックしてください。あなたが使用できるさまざまな安全なハッシュアルゴリズムがあります。 SHA1、SHA224、SHA256、SHA384、およびSHA512、RSAの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は、修正して実装できる優れたスニペットです。

関連する問題