繁体   English   中英

C / C ++使用公钥加密/解密

[英]C/C++ encrypt/decrypt with public key

我正在寻找两个在概念上类似于这些的功能:

// 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 stuff或其他),到使用其他简单函数生成的键。

我已经研究了一些加密库(libgcrypt,libgpgme,openssl ...),但用这些库实现这些函数看起来并不容易:它们需要非表面的非对称加密知识和很多代码

无论如何,这项任务似乎并不罕见。 如何实现上述两个功能?

不幸的是,加密总是需要对所涉及算法的非肤浅的了解。 很难做对。 “应用密码学手册”是可用的各种算法的相对可读的指南,所以它可能值得一看。

你也可以试试cryptlib 它似乎有一个分层设计,为您提供了许多参数的合理默认值,因此您可以开始使用,而无需过多担心细节。

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

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

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

真的,到目前为止我见过的更容易和安全的组合。

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

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

要将公钥和私钥视为字符串,您只需使用Base64或类似的编码即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM