gpt4 book ai didi

c - 在没有外部 DLL 的情况下用 C 语言的 PGP 公钥加密字符串?

转载 作者:行者123 更新时间:2023-11-30 15:55:04 25 4
gpt4 key购买 nike

我看到了大量 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 只是一个 header 库,需要在系统上安装 cl32.dll 文件。我还没有弄清楚如何创建一个静态 cl32.lib 文件,我可以将其包含在不需要 DLL 的项目中。这可以工作,或者另一个非 cryptlib 解决方案。

我也看过 Crypto++,但不幸的是,可下载的 chm 用户指南已损坏,并且该手册过于详细,如果没有某种指南,我无法遵循。

我应该指出,虽然我对 C 整体相当熟悉,但我的大部分经验都是旧的,并且是在 Linux 中,而不是使用我现在正在使用的 Visual Studio 2010。

谢谢,本

最佳答案

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

如果您担心 Windows 系统上缺少 DLL,您可以使用 Windows 加密 API,它存在于所有 Windows 系统上。

Cryptography Reference

Example C Program: Using CryptAcquireContext

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

关于c - 在没有外部 DLL 的情况下用 C 语言的 PGP 公钥加密字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12544986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com