2013-08-17 13 views
15

więc to jest mój kod i chcę ukryć moje hasło, ale nie wiem jak. Rozejrzałem się i żadne z nich nie pasuje do mojego kodowania, to jest aktualne kodowanie. Chodzi mi o to, że widziałem show = "*", a także getpass, ale nie wiem, jak umieścić je w tym kodowaniu. im przy użyciu python 2.7.3 i im kodowania na raspberry pi.python Ukrywanie raw_input

ans = True 

while ans: 
    print(""" 
        ------------- 
        | 1. Shutdown | 
        | 2. Items | 
        ------------- 
    """) 

    ans=raw_input(""" 

      Please Enter A Number: """) 

    if ans == "1": 

     exit() 
    elif ans == "2": 


     pa=raw_input(""" 

      Please Enter Password: """) 

     if pa == "zombiekiller": 

      print(""" 
        ---------------- 
        | 1. Pi password | 
        | 2. Shutdown | 
        ---------------- 
      """) 

      pe=raw_input (""" 

      Please Enter A Number: """) 

      if pe == "1": 
       print (""" 

      Pi's Password Is Adminofpi""") 
       import time 
       time.sleep(1) 
       exit() 

      elif pe == "2": 
       exit() 

      else: 
       print(""" 

      You Have Entered An Inccoredt Option. Terminating Programm""") 
       import time 
       time.sleep(1) 
       exit() 

     else: 
       print(""" 

      You Have Entered An Inccorect Password. Terminating Programm""") 
       import time 
       time.sleep(1) 
       exit() 
+0

Użyj [getpass.getpass()] (http://docs.python.org/2/library/getpass#getpass.getpass). – falsetru

+0

możliwy duplikat [Uzyskiwanie hasła do wiersza poleceń w Pythonie] (http://stackoverflow.com/questions/9202224/getting-command-line-password-input-in-python) – IanAuld

Odpowiedz

0

Użyj biblioteki hashlib Pythona wziąć hash MD5 wejściu, i porównać go z wersją hashed jego hasła w skrypcie. Here's przykład, jak można to zrobić.

+5

Nie o to prosił. Chciał ukryć dane wejściowe 'raw_input' ... – tamasgal

+0

Nie zrozumiałem tego, próbowałem z getpass.getpass w tej chwili –

+0

Nie jestem pewien, czy rozumiem, czego on naprawdę chce. Czy chce ukryć dane wejściowe w terminalu - czy wartość hasła w programie? –

48

getpass ukrywa wejście, po prostu zastąpić raw_input po zaimportowaniu modułu getpass, tak:

import getpass 
. 
. 
. 
pa = getpass.getpass() 
-1

Nigdy przechowywania identyfikatora użytkownika i hasła w pliku źródłowym, to luka w zabezpieczeniach!

Przechowuj je w pliku tekstowym i zaszyfruj je za pomocą kryptografii kluczy symetrycznych (przynajmniej MD5 lub aktualnie sugerowany standard min, SHA-3), aby zakodować hasło.

Rezultatem będzie wyglądać następująco:

: admin: $ 1 $ DQX/Wdy5 $ QQrH98XjvFBOm6vqu3qN/1 :: Administrator: admin: [email protected]:

W kodzie zablokować przeczytać plik i użyj tego samego algorytmu do odszyfrowania hasła.