2016-08-22 3 views
-1

내가 참고로이 링크를 C++에서의 openssl과 사용 예에 ​​의해 제공되는 AES GCM 암호화 메커니즘을 사용하려고를 사용하여 GCM AES의 IV를 설정할 수 없습니다 :하려면 openssl

: 이 https://wiki.openssl.org/index.php/EVP_Authenticated_Encryption_and_Decryption

그러나 문 다음은 나에게 오류를 제공

/* Set IV length if default 12 bytes (96 bits) is not appropriate */ 
if(1 != EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GCM_SET_IVLEN, 16, NULL)) 
    handleErrors(); 

오류는 "오류 : 'EVP_CTRL_GCM_SET_IVLEN'이 (가)이 범위에서 선언되지 않았습니다. '입니다. IVLEN을 16 바이트로 설정할 수없는 이유를 모르겠습니다. 나는 12 바이트의 기본값을 사용하고 싶지 않다. 어떤 포인터가 좋을 것입니다.

+2

"오류 메시지"란 무슨 뜻입니까? – Blorgbeard

+0

내 질문에 명확하지 않은 것에 대해 사과드립니다. 다음 오류가 발생했습니다. "오류 : 'EVP_CTRL_GCM_SET_IVLEN'이 (가)이 범위에서 선언되지 않았습니다. ' –

답변

0

오류가 해결되었습니다. 다음 사실, 예시적인 코드에서 IV 길이 암호화 동작을 초기화하고 설정하는 순서는 다음과

* Initialise the encryption operation. */ 
if(1 != EVP_EncryptInit_ex(ctx, EVP_aes_256_gcm(), NULL, NULL, NULL)) 
    handleErrors(); 

/* Set IV length if default 12 bytes (96 bits) is not appropriate */ 
if(1 != EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GCM_SET_IVLEN, 16, NULL)) 
    handleErrors(); 

I이 제 IV 길이 설정 구문, 즉 다음 암호화 동작을 초기화 역순 있었다. 나는 이것들이 독립적 인 단계라고 생각했고 순서는 중요하지 않았다. 하지만 인터페이스는 매개 변수를 설정하기 전에 사용하는 암호화 메커니즘을 알아야 할 수도 있습니다.