2011-10-24 63 views
0

下面的項目是在C++中用WinAPI完成的,用於加密/編碼我正在使用CryptoC++,但是我打開了更好的庫。我需要對電子郵件數據進行加密/編碼,將其傳輸,然後在另一端對其進行解密,以便特權用戶可以閱讀電子郵件。什麼方法/算法/庫可以安全地加密然後解密

我最初的想法只是使用我的密鑰(例如「MYKEY」)使用SHA256加密電子郵件文本。但我想我不完全明白哈希是什麼。我知道使用SHA256或MD5或AES加密的字符串是不可能解密的,但我認爲如果使用我的特殊密鑰(「MYKEY」)對字符串進行加密,那麼只要我知道特殊密鑰,就可以解密它。那是對的嗎?

如果不是,你可以建議一個庫,算法或方法,我可以用來實現我的任務加密/編碼電子郵件文本&只有能夠解密它,如果我有一個密鑰或一些共享密鑰,將允許我解密數據?

回答

2

如長頸鹿船長所述的製品,散列算法是不加密算法(儘管它們都在對稱加密的面積計算)。一個好的散列函數無法恢復適合生成的散列的消息(除了嘗試所有可能的消息以查看它們是否給出相同的散列)之外。 (而且,散列函數具有固定大小的輸出,但是具有可變大小的輸入,這意味着有許多消息給出了相同的散列值,即使一對消息給出相同的散列值或消息仍然很難找到對於給定的散列)。

您需要加密算法。很可能非對稱加密(使用公鑰加密,私鑰解密)是一個好主意。

不要發明新的加密數據格式或協議。你會犯錯,這會讓你的產品不安全。

對於電子郵件加密,請使用OpenPGP(RFC 4880)或S/MIME(RFC 3851)或其中某個子集的某些子集。

然後,您可以使用任何支持必要算法的庫或特定支持這些文件格式的某些庫。

相關問題