2011-07-28 36 views
1

對於大學項目,我正在用Java編寫一個程序來加密數字文件。我已閱讀密碼學介紹,介紹基本替代密碼和使用公鑰和私鑰的更高級算法。關於密碼學項目的建議

然後,我看了像Truecrypt和PGP這樣的軟件,看看他們使用了這些算法的實現。有些像AES和對稱密鑰加密,我沒有聽說過,似乎有很多不同的方法來做這種事情。

所以我只是在找人指點我正確的方向,我應該研究什麼。我計劃編寫的程序應該是安全的,其中大部分應該由我自己來完成(任務不是創建一個接口並使用現有軟件來執行加密 - 例如,如果要實施加密, RSA算法,我不得不寫代碼)。

+0

你究竟在做什麼?應用程序定義要使用的加密類型。 – Jonah

+0

我認爲可以通過對特定用途的現有加密庫的正確應用來演示大量的學習。事實上,在一個已知的接受者之後編寫代碼比沒有公式的事情所涉及的批判性思維更有意思。只是一個想法。 –

+0

我還不確切,但總的想法是安全加密數字文件供個人使用。我知道TruCrypt可以加密整個分區,但我不知道我是否可以做到這一點,但我想到的是一個類似的程序。 – Laon

回答

0

不太確定項目的教學目的是什麼,所以在這裏給出我自己的看法。

我認爲理解所涉及的挑戰的一件好事是自己編寫一個選定的算法,並且實際上也自己破解它,或者重播算法被破解的方式的分析。 事件比較好,用不同的方法來破解它。通常有一個暴力破解技術,要求你嘗試每一個解決方案,如果算法足夠薄弱,一個聰明的方式,只需幾個捕獲的消息就可以突破它。

因此,對於您的項目,您可以展示如何在一側加密數據,以及如何在另一側解密數據,以及某人如何截取和解密數據。

一些容易破裂的算法是:

這裏是最著名的算法不錯,但非詳盡的列表:

與此相關的是,您可以看看數字簽名,以及如何冒充某人以及如何有時可以將文檔簽名爲其他人。

+0

雖然(標準)TEA被破壞,但它只是一個新手項目。 –

1

加密的主題非常大,你在本網站的範圍內很難涵蓋大部分內容。但是,這裏有幾個基本的指針。

通常,加密可以使用對稱密鑰或公鑰/私鑰模型。在對稱密鑰模型中,加密和解密使用相同的密鑰。這些算法相當安全,性能良好,但它們存在的問題是如何在發送者和接收者之間交換密鑰。另一方面,公鑰/私鑰加密使用兩個單獨的密鑰 - 一個是隻有接收方纔會知道的私鑰和一個世界公知的公鑰。訣竅是,如果你想加密消息,你可以使用公鑰來實現,但是解密只能通過接收者的私鑰(公鑰不能用於那個,這就是爲什麼這些算法不對稱)。這解決了密鑰交換的問題,但是公鑰/私鑰系統需要更多的計算資源。在許多情況下,公鑰/私鑰加密用於加密對稱密鑰,因此可以輕鬆發送給接收方。

AES是非常好質量的對稱密鑰加密的一個例子。 RSA是公鑰/私鑰系統。

您的選擇將由您試圖達到的目標來定義。你說過你要加密數字文件。如果服務器或個人計算機上都會發生加密和解密,則可以使用對稱加密(如AES),並將其存儲在服務器的某個位置。