我在C++和C#中看到了很多这样的例子,但在C中没有运气。我试图在不引用外部DLL的情况下对字符串进行简单的加密。我开始尝试cryptlib(在转到PGP之前只是基本加密),并使用以下.c文件:
#include "include/cryptlib/cryptlib.h"
void PGPEncrypt(char* input, char* output) {
CRYPT_ENVELOPE cryptEnvelope;
int bytesCopied;
cryptCreateEnvelope(&cryptEnvelope, CRYPT_UNUSED, CRYPT_FORMAT_CRYPTLIB);
// Below line makes things more efficient if you know the data size
cryptSetAttribute(cryptEnvelope, CRYPT_ENVINFO_DATASIZE, strlen(input));
// Push unencrypted, pop encrypted. 4000 is the size of output
cryptPushData(cryptEnvelope, input, strlen(input), &bytesCopied);
cryptFlushData(cryptEnvelope);
cryptPopData(cryptEnvelope, output, 4000, &bytesCopied);
cryptDestroyEnvelope(cryptEnvelope);
}
然而,在编译它时,我在运行应用程序时意识到,cl32.lib只是一个头库,需要在系统上安装cl32.dll文件。我还没有弄清楚如何创建一个静态cl32.lib文件,我可以将其包含在我的项目中,而不需要DLL。这将起作用,或者另一个非cryptlib解决方案。
我也看了Crypto++,但不幸的是,可下载的chm用户指南坏了,而且手册太详细了,如果没有某种指南,我无法遵循。
我应该指出的是,虽然我对C作为一个整体相当熟悉,但我的大部分经验都是旧的,而且是在Linux中,而不是使用我现在正在使用的Visual Studio 2010。
谢谢
本