我正在寻找两个与以下函数在概念上类似的函数:
// 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……),但是要使用这些库来实现这样的函数并不容易:它们需要对非对称加密有深入的了解和大量的代码。
无论如何,这个任务似乎并不少见。 我该如何实现上述两个函数?
std::string
,它是8位清洁的,并包括一个长度,与字符串内容分开。 - Magnus Hoffstring
中嵌入了长度。当然,如果字符串是char*
,那么所有这些参数都需要另一个参数来表示长度:此外,密钥(甚至纯文本)也是二进制的。 - peoro