2011-07-26 119 views
3

最近我寫了一個QT程序,要求我加密/解密文件。我對加密技術很陌生,因爲我完全不知道如何使用編程進行加密。谷歌搜索一段時間後,我發現這個thread這是非常類似於我的目標。 他們建議使用加密++,但我的問題是當我到達那裏時,有大量的加密選擇。我只想加密一個文件,不需要一個複雜的文件,也不需要密碼來打開文件。只有我的程序可以打開並閱讀該文件。如何選擇加密算法來加密/解密文件?

我可以知道如何選擇適合我的加密算法嗎?

THanks @!

+3

您提供的信息不足。你從哪個人試圖隱藏文件內容? (即其他可以看到文件但不能看到應用程序可執行文件的用戶,可以看到但不能運行應用程序的人,可以運行應用程序的人)。他們看不見它有多重要?你是否試圖讓它變得足夠硬,不值得他們的時間,或者幾乎不可能?他們將如何確定和掌握IT?它是什麼類型的文件內容(例如數字,文本,可執行代碼)? –

+1

傳統的ROT13加密算法如何?它也可以在沒有密碼的情況下運行... ;-) –

+0

選擇解密算法很容易;它必須是加密算法的逆向。 –

回答

3

考慮到你對我對這個問題的評論的回覆中的目的的解釋,似乎除了XML的低級混淆之外沒什麼意義。例如,您可以簡單地用任意值(例如AA十六進制)對文件內容進行XOR或在連續字符(AA,23,B7,...)上使用少量值,然後循環使用AA再次。聽起來不像使用真正的加密庫有很多好處:任何決心搞砸他們的軟件操作的人都會找到一種方法......

8

也許很短的(很短)介紹到密碼算法將是有益的:

  • 對稱加密:使用相同的密鑰來加密和解密。例子包括DES,AES和Blowfish。
  • 非對稱加密:需要某個密鑰來加密(公共),而另一個密鑰需要解密(私有)。例子包括RSA,DSA和ElGamal

對於這個應用程序,我會建議一個對稱算法,AES可能會很適合(AES256)。不管你使用什麼,總會有一個密鑰(否則它不會是很好的加密)。簡單的方法是直接在程序中存儲密碼。這將允許用戶避免輸入任何內容,但是即使在編譯後的二進制文件中,確定的攻擊者也可以輕鬆地找到密碼。

除非您提供進一步的詳細信息,否則這只是我可以獲得的具體信息。我希望這有幫助。

-1

最簡單的「真正的」對稱算法可能是河豚,有sample code in 'c' and'c++'這是很容易集成到你的代碼

有一個獨立的QCrypto LIB(不是主要的Qt SRC的一部分),但它可能是一個小比你需要的更復雜

+2

不,有人問我「應該使用什麼密碼」永遠不要告訴「去執行密碼」。他們應該被告知使用高質量圖書館的標準算法。 – Novelocrat

+0

該鏈接準備使用算法作者(Bruce schneier)和其他人的標準算法代碼 –

+0

RC4比Blowfish編程簡單得多。 – rossum