2013-08-17 100 views
15

所以這是我的代碼,我想隱藏我的密碼,但我不知道如何。我環顧四周,沒有一個似乎適合我的編碼,這是目前的編碼。我的意思是我看過show =「*」,還有getpass,但我不知道如何將它們放入這個編碼中。即時通訊使用Python 2.7.3和即時編碼在樹莓派。python隱藏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)。 [獲取命令行輸入密碼在Python]的 – falsetru

+0

可能重複(http://stackoverflow.com/questions/9202224/getting-command-line-password-input-in-python) – IanAuld

回答

0

使用hashlib庫來獲取輸入的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]

在你的代碼塊的讀取文件並使用相同的算法來解密密碼。