我正在寻找与以下两个功能相似的两个功能:

// returns the encrypted text
string encrypt( string public_key, string pass_phrase, string text );
// returns the original text
string decrypt( string private_key, string pass_phrase, string encrypted_text );

在哪里 string 可能是一个 char*, , 一种 std::string 或很容易转换为这两个。在哪里 public_keyprivate_key 从基本上可以是任何东西,从具有某些命令(GPG/SSL的东西或其他)的键到与其他命令生成的键 简单的 职能。

我已经研究了一些密码库(libgcrypt,libgpgme,openssl ...),但是使用这些库来实施此类功能,这似乎并不容易:它们需要关于不对称加密的不屈服的知识,很多代码。

无论如何,这项任务似乎并不少见。如何实现上面的两个函数?

有帮助吗?

解决方案

不幸的是,加密 总是 需要对所涉及的算法有非卑鄙的知识。很难正确。 “应用密码学手册”是可用的各种算法的相对可读指南,因此可能值得一看。

你也可以尝试 cryptlib. 。它似乎具有良好的设计,可为您提供许多参数的明智默认值,因此您希望您可以开始而无需过多担心细节。

其他提示

当有人要求轻松加密时,我只能推荐 Keyczar.

它不仅提供了几种语言(可以使用相同键)的干净界面,还提供了处理密钥旋转等的机制。

当然,实施的算法的安全默认值使您不必担心技术细节。

确实,到目前为止,我见过的更好的简单安全组合。

假设您不需要平台不可知论,那么密码学下一代(CNG)是Windows上相对较新的加密API,令人惊讶地直观且易于使用。我写了一篇文章,其中包括您在典型应用程序中可能需要的所有主要加密操作的示例。本文的示例代码还提供了使用Visual C ++编译器为这些操作的完整工作示例。

http://msdn.microsoft.com/en-us/magazine/cc163389.aspx

要将公共和私钥视为字符串,您可以简单地使用Base64或类似的编码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top