나는 C++과 C#에서이 예제의 톤을 볼 수 있지만 C와는 아무런 문제가 없다. 외부 DLL을 참조하지 않고 문자열을 간단하게 암호화하려고한다. cl32.lib 그냥이었다 응용 프로그램을 실행할 때이 일을 컴파일하는 동안, 나는 깨달았다외부 DLL없이 C에서 PGP 공개 키로 문자열을 암호화 하시겠습니까?
#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 파일 (PGP로 이동하기 전에 단지 기본 암호화)와 함께 cryptlib을 시도 시작 헤더 라이브러리 및 시스템에 cl32.dll 파일을 설치해야합니다. DLL을 필요로하지 않는 프로젝트에 포함 할 수있는 정적 cl32.lib 파일을 만드는 방법을 아직 알지 못했습니다. 그건, 또는 다른 비 cryptlib 솔루션을 작동합니다.
나는 또한 Crypto ++를 살펴 봤지만, 불행히도 다운로드 가능한 chm 사용자 안내서가 손상되어 설명서가 너무 자세히 나와 어떤 안내없이 따르지 않습니다.
나는 C 전체를 상당히 잘 알고 있지만, 대부분의 경험은 오래되었고 Linux에서는 지금하고있는 Visual Studio 2010을 사용하지 않고 있습니다.
덕분에, 벤
감사! 이것은 Visual Studio 중 주니어 상태 일 가능성이 있지만 정적 EXE를 어떻게 컴파일합니까? 나는 많은 자습서를 찾았지만 찾은 모든 것이 cl32.lib 파일 (임포트 라이브러리)을 프로젝트에 포함시킨 다음 cl32.dll이 같은 폴더에 있어야합니다. 내 EXE 내에 실제로 cl32.dll 파일을 포함시키는 구체적인 방법이 있습니까? 이 기능이 작동하지 않으면 Windows 암호화도 체크 아웃합니다. 다시 한번 감사드립니다. – Fmstrat
또한 windows crypto API를 살펴 보았습니다. 파일 크기가 적 으면 저에게 도움이 될 수 있다고 생각하지만 기존의 PGP 공개 키와 개인 키는 처리 할 수 있습니까? 나는 키를 생성하는 곳에서 많은 소스 예제를 본 다음이를 사용하지만 기존의 ASCII 키 파일이 있는지에 대해서는 아무 것도 찾을 수 없습니다. – Fmstrat
참고로 내 두 번째 질문에 대한 대답은 아니오 인 것처럼 보입니다. http://social.msdn.microsoft.com/Forums/en-US/visualfoxprogeneral/thread/c9155c02-f792-4ce0-b601-2c0e76251fec 감사합니다. 첫 번째 DLL (DLL)을 아직 찾지 못했습니다. – Fmstrat