2011-10-24 28 views
0

下面的项目是在C++中用WinAPI完成的,用于加密/编码我正在使用CryptoC++,但是我打开了更好的库。我需要对电子邮件数据进行加密/编码,将其传输,然后在另一端对其进行解密,以便特权用户可以阅读电子邮件。什么方法/算法/库可以安全地加密然后解密

我最初的想法只是使用我的密钥(例如“MYKEY”)使用SHA256加密电子邮件文本。但我想我不完全明白哈希是什么。我知道使用SHA256或MD5或AES加密的字符串是不可能解密的,但我认为如果使用我的特殊密钥(“MYKEY”)对字符串进行加密,那么只要我知道特殊密钥,就可以解密它。那是对的吗?

如果不是,你可以建议一个库,算法或方法,我可以用来实现我的任务加密/编码电子邮件文本&只有能够解密它,如果我有一个密钥或一些共享密钥,将允许我解密数据?

回答

2

如长颈鹿船长所述的制品,散列算法是不加密算法(尽管它们都在对称加密的面积计算)。一个好的散列函数无法恢复适合生成的散列的消息(除了尝试所有可能的消息以查看它们是否给出相同的散列)之外。 (而且,散列函数具有固定大小的输出,但是具有可变大小的输入,这意味着有许多消息给出了相同的散列值,即使一对消息给出相同的散列值或消息仍然很难找到对于给定的散列)。

您需要加密算法。很可能非对称加密(使用公钥加密,私钥解密)是一个好主意。

不要发明新的加密数据格式或协议。你会犯错,这会让你的产品不安全。

对于电子邮件加密,请使用OpenPGP(RFC 4880)或S/MIME(RFC 3851)或其中某个子集的某些子集。

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

相关问题