我正在使用Qt資源系統來存儲GUI中使用的圖像和數據庫的加密密碼。我想存儲密碼並讓用戶改變它們。應用程序應該能夠記住密碼。所以我想在應用程序本身中存儲新創建的加密密碼(與嵌入資源的方式相同)。這是可以編輯Qt應用程序中的嵌入式資源嗎?
目前我在編譯時將密碼文件保存在應用程序資源中。編譯後密碼不可更改。
我正在使用Qt資源系統來存儲GUI中使用的圖像和數據庫的加密密碼。我想存儲密碼並讓用戶改變它們。應用程序應該能夠記住密碼。所以我想在應用程序本身中存儲新創建的加密密碼(與嵌入資源的方式相同)。這是可以編輯Qt應用程序中的嵌入式資源嗎?
目前我在編譯時將密碼文件保存在應用程序資源中。編譯後密碼不可更改。
你想要做的是非常糟糕的風格。應用程序永遠不需要修改自己的可執行文件。在管理良好的系統中,應用程序的用戶無論如何都不能寫入安裝目錄。使用QSettings,就是這麼做的。如果您真的希望這樣做,您可以將其存儲在.ini文件中而不是註冊表中。
請確保對於您使用單向函數的密碼 - 密碼強的散列,而不是加密。根據定義,加密是雙向的:您可以加密,然後解密。如果你認爲自己是一個專業人士,你永遠不會想要單向加密和單向函數(哈希)交換。他們是非常不同的事情,你會而且應該被罵 - 我怎麼知道你的真正含義,無論你是否只是鬆散的語言,或提出一些固有的不安全的東西。
用密碼,你永遠不會想要解密。如果有人提供密碼進行檢查,則需要加密,然後比較加密版本。這樣很難恢復原來的密碼(很可能在H.R.用Vinnie爲她的Facebook賬戶和老闆的公司銀行賬戶使用)。確保你用你的哈希值來防止彩虹表攻擊。你可能應該確保你知道你在做什麼:在這方面進行自我教育。沒有人是天生的。讓我們避免另一個自制的不安全密碼方案......其中有太多的人認爲如果不知道有關該主題的任何內容,他們會以某種方式產生一個相當安全的應用程序。現實,唉,不能在這裏被愚弄,而且不知道通常意味着有人會知道知道會最終看看你的代碼(也許是反向工程),並嘲笑它......結束咆哮。
+1用於提示QSettings。這就是它的原因。平臺無關設置 – jdi 2012-05-29 03:35:32
感謝您的信息。目前我正在使用QSetting第一次輸入密碼時保存散列密碼。然後每次用戶輸入密碼時,我會散列新輸入的密碼並將結果與保存的密碼進行比較。這裏有一些問題:1.哈希密碼對每個人都是可見的,MD5哈希很容易中斷。 2.兩個不同的密碼可能具有相同的散列。 – 2012-05-29 19:15:38
1.使用加密等級散列。我不能告訴你MD5是否「容易中斷」,你應該能夠弄明白。 2.這不是問題。那麼如果哈希碰撞呢?有大量的密碼會有任何散列 - 找到它們需要詳盡的搜索。因此你有安全性不可行性。找到那些相同的哈希密碼需要「非常長」。這是目前最先進的技術。 – 2012-05-30 16:55:10
Sorush:這裏有幾個不太美觀,更多的技術答案:
在Windows上,這是難以不可能的,因爲操作系統不會讓你編輯可執行運行時:https://stackoverflow.com/a/1954479/58133
在Linux,可能是可行的:http://www.overclockers.com/forums/archive/index.php/t-195048.html
我想我得到了答案:http://stackoverflow.com/questions/1038795/can-i-modify-the-content-of-an-embedded-resource-text-xml- file-in-a-net-appli – 2012-03-22 09:14:48