이 클래스는 MSVC++ 2010 Express : http://www.codeproject.com/KB/recipes/HMACSHA1class.aspx에서 사용하고 있습니다. 나는 Vista 32 비트를 실행 중이다. "오류 C3861 :이 때문에이 말을 그대로2 바이트 씩 HMACSHA1 해제
fIn = fopen(szFileName, "rb");
fIn = fopen_s(szFileName, "rb");
로 : ... 그것은 그냥 변경 작업
SHA1.cpp를 얻을 꽤 많이 '는 fopen' : 식별자를 찾을 수 없습니다 ".
내가 INT 주에서 사용되는 코드는 다음과 같습니다
BYTE Key[20] ;
BYTE digest[20] ;
unsigned char test[] = "Hi There" ;
memset(Key, 0x0b, 20) ;
CHMAC_SHA1 HMAC_SHA1 ;
HMAC_SHA1.HMAC_SHA1(test, strlen((const char *)test), Key, sizeof(Key), digest) ;
for(int i=0;i<sizeof(digest);i++)
std::cout << hex << (int)digest[i];
int a;
std::cin >> a;
// Check with digest equal to 0xb617318655057264e28bc0b6fb378c8ef146be00
// or not
문제는 내 다이제스트는 동일하다 : 0xb61731865557264e28bc0b6fb378c8ef146be0 그것은 0xb617318655057264e28bc0b6fb378c8ef146be00 동일하게 가정합니다. 이 코드의 잘못된 점과 작동 방법에 대한 도움이 많은 도움이 될 것입니다 ...
또는 누군가가 올바른 방향으로 더 나은 HMACSHA1 클래스를 가리킬 수 있습니다. win32 용 CryptoAPI는 복잡하고 어리 석다.
이 실제 해시 생성에 문제처럼 보이지만 오히려 출력 코드를하지 않습니다
아마이 문제를 해결합니다. 나는 C++ 스트림 API에 익숙하지 않지만'0'을 생략하고 있기 때문에 각 바이트를 하나 또는 두 개의 char 16 진수 문자열로 출력 할 것이고'0'을 생략 할 것입니다. – CodesInChaos