【发布时间】:2011-05-06 16:02:16
【问题描述】:
我正在寻找两个在概念上类似于这些的函数:
// 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_key 和 private_key 基本上可以是任何东西,从使用某些命令(gpg/ssl 等)生成的键,到使用其他简单函数生成的键。
我研究了一些密码学库(libgcrypt、libgpgme、openssl ...),但用这些库实现这些功能似乎并不容易:它们需要关于非对称加密的非肤浅知识还有很多代码。
无论如何,这项任务似乎并不罕见。 如何实现上面的两个功能?
【问题讨论】:
-
你检查过 Keyczar 吗? code.google.com/p/keyczar
-
encrypted_text 可能是二进制数据。您需要注意嵌入的零。我会在原型中包含长度...
-
@pmg:我意识到有一个 [c]-tag,但我想 peoro 正在考虑 C++ 的
std::string,它是 8 位干净的并且包含一个长度,与字符串。 -
@pmg:我认为
string在某处嵌入了长度。当然,如果字符串是char*s,那么所有这些参数的长度都需要另一个参数:键(甚至可能是纯文本)也是二进制的。 -
@kotlinski:不,我没有检查。我去看看!
标签: c++ c encryption-asymmetric