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 ファイルをシステムにインストールする必要があることに気付きました。DLL を必要としないプロジェクトに含めることができる静的な cl32.lib ファイルを作成する方法をまだ理解していません。それはうまくいくでしょう、または別の非cryptlibソリューション。
Crypto++ も調べましたが、残念ながら、ダウンロード可能な chm ユーザー ガイドが破損しており、マニュアルが詳細すぎて、何らかのガイドがないと理解できません。
私はC全体にかなり精通していますが、私の経験のほとんどはLinuxで古く、現在行っているVisual Studio 2010を使用していません。
ありがとう、ベン