2015-06-01 68 views
0

我想我知道基本實現PGP加密/ Decrypttion:如何定公/私鑰

  • 基於公共密鑰加密,每個人都有一個公共&私鑰
  • 發件人與收件人的加密公鑰。
  • 收件人用他們自己的私鑰解密。

但是這不足以實現這一點。例如,使用什麼加密算法以及如何實現?

在.NET中編寫一個可傳遞的pgp加密/解密庫有多難?給出一個消息和相關的鍵?

我在哪裏可以找到這個標準算法?

回答

1

OpenPGP在RFC 4880中定義。

它是一種高層次的協議,其使用broad variety of cryptographic algorithms,有些是強制性的(3DES,DSA,Elgamal的,SHA-1),其他也應實行(RSA,AES,SHA-2,壓縮,.. )。特別建議使用而不是來自行實現這些基本算法,以防止大量的旁路和定時攻擊,而是依賴現有的密碼庫(GnuTLS,OpenSSL)。

如果要實現基於這些現有算法的OpenPGP消息格式,請務必閱讀Security ConsiderationsImplementation Nits 章,對可能的攻擊一些重要的信息考慮和兼容性問題。如果你的主要目標是一般的學習OpenPGP和密碼學,我建議你看看BouncyCastle(已經有C#和Java實現),GnuPG(這可能是OpenPGP的實現,用戶數量最多,附帶幾乎每個Linux發行版,但也可用於Windows)或OpenPGP.go library(書寫完好,去)。他們都是開源的,並且可能在他們的bug跟蹤器中解決有趣的問題(BouncyCastleGnuPG)。

2

Bouncy Castle有一個.NET API,可用於加密/解密文件/數據。 (源代碼包含在他們的網站上)

有一些示例代碼here演示瞭如何加密數據。

我已經使用它,它運作良好。