在没有外部DLL的情况下用C中的PGP公钥加密字符串? 我看到了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); }

在没有外部DLL的情况下用C中的PGP公钥加密字符串? 我看到了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); },c,visual-studio-2010,encryption,pgp,C,Visual Studio 2010,Encryption,Pgp,然而,在编译该文件时,我在运行应用程序时意识到cl32.lib只是一个头库,需要在系统上安装cl32.dll文件。我还没有弄清楚如何创建一个静态cl32.lib文件,我可以将它包含在我的项目中,而不需要DLL。这将起作用,或者另一个非加密库解决方案 我也看了Crypto++,但不幸的是,可下载的chm用户指南被破坏了,而且手册太详细了,如果没有某种指南,我无法遵循 我要说的是,虽然我对C整体相当熟悉,但我的大部分经验都是在Linux中积累的,而不是我现在正在使用的VisualStudio2010

然而,在编译该文件时,我在运行应用程序时意识到cl32.lib只是一个头库,需要在系统上安装cl32.dll文件。我还没有弄清楚如何创建一个静态cl32.lib文件,我可以将它包含在我的项目中,而不需要DLL。这将起作用,或者另一个非加密库解决方案

我也看了Crypto++,但不幸的是,可下载的chm用户指南被破坏了,而且手册太详细了,如果没有某种指南,我无法遵循

我要说的是,虽然我对C整体相当熟悉,但我的大部分经验都是在Linux中积累的,而不是我现在正在使用的VisualStudio2010

谢谢,
Ben

如果只想删除依赖项,可以通过编译程序静态来包含外部依赖项

如果您担心windows系统上缺少DLL,可以使用windows crypto API,该API存在于所有windows系统上


如果您不想要这些,您仍然可以实现自己的加密库。但我不建议这样做,因为它充满了潜在的陷阱,即使你是加密专家。

谢谢!这可能是我在VisualStudio中的初级地位,但我如何编译静态EXE?我已经搜索了很多教程,但我找到的所有内容都要求在项目中包含cl32.lib文件(导入库),然后cl32.dll将位于同一文件夹中。是否有具体的方法将cl32.dll文件嵌入到我的EXE中?如果我不能让它工作,我也会检查windows加密。再次感谢。另外,看了一下windows crypto API,我认为它可能适合我,文件大小较小,但它能处理预先存在的PGP公钥和私钥吗?我看到了大量的源代码示例,其中它创建了一个密钥,然后使用该密钥,但是找不到任何关于我是否有一个现有的ASCII密钥文件的信息。不过,还没有找到第一个(DLL)。