2013-08-17 3 views
15

так что это мой код, и я хочу скрыть свой пароль, но я не знаю, как это сделать. я огляделся, и никто из них, похоже, не вписывается в мое кодирование, это текущая кодировка. я имею в виду, что я видел show = "*", а также getpass, но я не знаю, как разместить их в этой кодировке. im, используя python 2.7.3 и im кодирование на малине pi.python Hiding 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

Используйте [getpass.getpass()] (http://docs.python.org/2/library/getpass#getpass.getpass). – falsetru

+0

Возможный дубликат [Получение ввода пароля командной строки в Python] (http://stackoverflow.com/questions/9202224/getting-command-line-password-input-in-python) – IanAuld

ответ

0

Используйте hashlib библиотеку Python взять MD5 хэш ввода, и сравнить ее с версией хэшированной вашего пароля в сценарии. Here's пример того, как вы могли это сделать.

+5

Это не то, что он просил. Он хотел скрыть ввод 'raw_input' ... – tamasgal

+0

Я не понял ничего из этого, я пытался с getpass.getpass на данный момент –

+0

Я не уверен, что я вполне понимаю, чего он на самом деле хочет. Он хочет скрыть ввод в терминале - или значение пароля в программе? –

48

getpass скрывает вход, просто замените raw_input после импорта модуля getpass, например:

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

Никогда не храните идентификатор пользователя и пароль в исходном файле, это уязвимость!

Сохраните их в текстовом файле и зашифруйте их с помощью некоторой криптографии с симметричным ключом (по крайней мере, MD5 или предлагаемый минимальный стандарт SHA-3) для кодирования пароля.

Результат будет выглядеть примерно так:

: админ: $ 1 $ DQX/Wdy5 $ QQrH98XjvFBOm6vqu3qN/1 :: Администратор: админ: [email protected]:

В коде блокировать ваш читать файл и использовать тот же алгоритм для дешифрования пароля.