什么方法/算法/库可以安全地加密然后解密

What method/algorithm/library can securely encrypt then decrypt

本文关键字:加密 然后 安全 解密 方法 算法 什么      更新时间:2023-10-16

下面的项目是用WinAPI在c++中完成的,对于加密/编码,我使用的是cryptoc++,但我对更好的库开放。我需要加密/编码电子邮件数据,传输它,然后在另一端解密它,以便特权用户可以阅读电子邮件。

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

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

正如长颈鹿船长所说,散列算法不是加密算法(尽管它们都被计算在对称加密领域)。一个好的散列函数没有办法恢复符合生成的散列的消息(除了尝试所有可能的消息,看看它们是否给出相同的散列)。(此外,哈希函数的输出大小是固定的,但输入大小是可变的,这意味着有许多消息给出相同的哈希值。即使找到一对给出相同哈希值的消息,或者找到一个给定哈希值的消息,也应该很难。

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

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

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

你可以使用任何支持必要算法的库,或者一些专门支持这些文件格式的库。

SHA256和MD5是单向函数。也就是说,没有解密。参见哈希http://en.wikipedia.org/wiki/Cryptographic_hash_function。

但是,在尝试创建安全通信之前,您确实需要仔细阅读加密程序。

话虽如此,维基百科有一篇文章专门介绍实现http://en.wikipedia.org/wiki/AES_implementations