2011-05-10 60 views
0
unsigned char * BUFFER_PTR; 
CRYPT_CONTEXT cryptContext; 

// Initialize the buffer 
BUFFER_PTR = (unsigned char *) malloc(sizeof(char) * BUFFER_SIZE); 
memset(BUFFER_PTR, 'X', BUFFER_SIZE); 

//Initialize crytplib 
cryptInit(); 
// create encryption context 
cryptCreateContext(&cryptContext, CRYPT_UNUSED, CRYPT_ALGO_ELGAMAL); 
cryptSetAttributeString(cryptContext, CRYPT_CTXINFO_LABEL, KEY_ID, strlen(KEY_ID)); 
cryptGenerateKey(cryptContext); 

/* ERROR >>>*/ cryptEncrypt(cryptContext, BUFFER_PTR, BUFFER_SIZE); /* this line fails and I don't know why :-(*/ 
+2

請更具體一些。當你說一行失敗時,它返回什麼錯誤代碼?你有沒有在CryptLib文檔中查找錯誤代碼? – crazyscot 2011-05-10 12:17:15

回答

2

使用谷歌搜索cryptlib CRYPT_ERROR_PARAM3表明您的第三個參數有問題。現在看看cryptlib手冊的186頁,約CryptEncrypt公共密鑰算法:

如果加密數據長度是不一樣的密鑰大小,該函數將返回CRYPT_ERROR_PARAM3,表明長度無效。

我從來沒有使用cryptlib,所以這是一個受過教育的猜測,但它看起來更像是你的明文不是你正在使用的密鑰的合適大小。

相關問題