2012-09-12 72 views
0

腳本用於每天通過用戶交互發送電子郵件(僅限Gmail)。我想將他們的電子郵件以純文本文件存儲在硬盤中。什麼是正確的做法?如何以正確的方式在硬盤上存儲密碼?

  • 我知道一個方法是詢問用戶密碼保護的電子郵件密碼,但這種方法是沒有意義的,因爲用戶必須在每一個電子郵件發送時間鍵入一個新的密碼,所以我寧可問他們的電子郵件密碼。

  • 另一種方法是加密密碼,並將特定信息與特定信息組合使用,如計算機名稱+用戶名+系統+ ...,然後使用此密鑰對加密密碼進行解密。這個問題,我使用Autoit這是易於反編譯,所以當一個潛在的攻擊者獲得加密密碼,他們理論上可以知道加密密鑰,所以無論誰加密密碼許多uniq信息,無論如何,他們都可以得到它。

  • 另一種方法是使用OAuth的Gmail,因此用戶並不需要在所有輸入密碼,但我不能這樣做。

任何想法?

+0

什麼操作系統?編程環境? (我問一些操作系統和框架有設施可以幫助你) –

+0

語言是[Autoit](http://autoitscript.com)腳本,它僅適用於Windows。 – kissgyorgy

回答

3

既然你在Windows編程,我會建議尋找到Windows的API做密碼爲你工作。假設你不願意做出不同的假設(例如:TPM),你可以相信他們比你可能創造的更好。

在Win8中現在有一個PasswordVault類,如果你想針對該操作系統。 在< = Win7,有DPAPI和憑證管理器

這些都不是GMail特定的...這只是通用的「在Windows上安全地存儲東西」的各種建議。這很可能是您應該追求的更好的gmail特定方式(例如:特定於服務的憑據)。但即使你這樣做了,這也是將其存儲在客戶端操作系統上的更好方法。

-1

的AutoIt有_Crypt ...()函數用於此。您可以散列@computername或@username,並使用散列作爲_Crypt_DeriveKey()函數的密鑰來本地化其密碼的用法。然後使用該密鑰將密碼字符串作爲數據傳遞給_Crypt_EncryptData()。將加密密鑰存儲在純文本文件中。

當你去回調它時,讀取文件,用_Crypt_DeriveKey()再次創建密鑰,然後用_Crypt_DecryptData()對其進行解密。後者函數的輸出應該是你的密碼。

Crypt.au3利用WinAPI的功能進行加密。

+0

你沒有看過這個問題,我討厭那個... 第二點要點。我做了完全一樣的,但我不喜歡它。 我想要一個可以看到加密方法(代碼)並且仍然無法解密密碼的解決方案。 – kissgyorgy

+1

我聽說最新版本的AutoIt很難反編譯,因爲用於舊版本的反編譯器不適用於最新版本的反編譯器。這是我從不同來源看到的信息。不幸的是,反編譯的話題在autoitscript.com論壇中是禁用的,所以我無法證實這一點。另外,接受的答案與我的幾乎相同。這兩種方式訪問​​WinAPI來執行加密......所以我想我會給出用AutoIt來使用UDF的答案。因此,無論哪種方式,如果有人反編譯它,他們會看到_Crypt ...()或DllCall()目標API DLL – Mechaflash

+1

要修復上述評論,他們不會看到實際的功能,但調用C++代碼用於加密功能的WinAPI。所以他們將是同義詞。 – Mechaflash

相關問題