2014-09-25 77 views
0

我正在使用Python腳本和pysftp模塊連接到SFTP服務器。如何在Python pysftp中加密密碼?

顯然,我可以通過一個SFTP密碼明確,我不喜歡。

我的問題:我怎麼能對加密的一個,以避免有人從可見的世界替換密碼?

+1

密碼應該是不可見的*上線*。無論如何,在某些時候,您需要知道未加密的密碼才能對其進行加密。 – monkut 2014-09-26 01:08:36

回答

0

我發現了這個問題的解決方案。這個對我有用。 而不是使用密碼的顯式文本,我首先編碼它,並把劇增的形式放入腳本。

像這樣:

import base64 

## To encrypt: 
base64.b64encode("XYZ") 
## you got 'WFla' 

## To decrypt: 
base64.b64decode("WFla") 
# you got 'XYZ' 
0

你的意思是你不想要的密碼是在代碼或配置文件可見?無法以允許自動解密的方式對任何內容進行加密。你所能做的只是混淆密碼,但並不真正加密密碼。如果任何人都可以訪問你的代碼,他/她總是可以對你的「加密」進行逆向工程。

+0

馬丁。你是對的。讓我們稱之爲混淆......我的目標不是加密密碼,而是在有人打開python腳本時不可讀。我怎麼能混淆它呢?謝謝 – susja 2014-09-26 11:36:13

+0

那麼......我找到了解決我的問題的方案。我使用了base64模塊,它滿足了我的需求。我明白,任何人都可以解碼它,但我的目標只是隱藏它在python文本文件中不可讀。感謝所有的建議。我現在都在 – susja 2014-09-26 13:50:04

+0

@susja發佈它作爲答案並接受它來關閉這個問題。 – 2014-09-26 14:57:55

0

保持密鑰和密碼,以世界不可見的標準方法是不把它們存放的地方世界可讀。這通常意味着不要將它們放入腳本中,而是配置文件(例如netrc),這些文件又被設置爲只能由您讀取。更現代的選擇是keyring服務,如kwallet。

此外,SSH(及其子協議SFTP)支持認證使用不對稱密鑰加密。通過使用authentication agent,您可以將這些密鑰保存在單獨的進程中,因此您的腳本不需要解密或存儲它們的功能。

兩個SSH代理和鑰匙圈服務支持加密密鑰存儲本身,但是否這樣做(何)是從從他們請求鍵程序隱藏。如果您使用的SFTP