2010-09-23 33 views
7

Tôi mới sử dụng OpenSSL. Tôi hiểu rằng việc mã hóa phải được thực hiện bằng cách sử dụng API EVP hoạt động như một giao diện chung cho tất cả các mật mã. chế độ AES CTR dường như có mặt trong phiên bản OpenSSL tôi có, nhưng định nghĩa cho EVP_aes_128_ctr bị vô hiệu hóa trong evp.h:Có thể sử dụng mã hóa chế độ CTR AES bằng API EVP không?

#if 0 
const EVP_CIPHER *EVP_aes_128_ctr(void); 
#endif 

Bất cứ ý tưởng tại sao điều này là gì? Tôi có thể xóa #if 0 không? Bất kỳ con trỏ nào khác về việc mã hóa chế độ bit AES 128 bit để làm việc trong OpenSSL sẽ được đánh giá cao!

Cảm ơn!

Trả lời

4

Btw, có vẻ như câu trả lời cho điều này là chưa, chưa. Nhưng có lẽ sớm thôi. Tôi thấy điều này chủ đề email chỉ ra rằng một bản vá để giải quyết vấn đề này có thể đã được đệ trình vào tháng năm 2010:

http://www.mail-archive.com/[email protected]/msg01972.html

Nhưng khi tôi tải về các chi nhánh phát triển mới nhất từ ​​SVN, AES CTR vẫn chưa được kích hoạt trong EVP. Tôi đã kết thúc chỉ thực hiện trực tiếp, mà tôi tìm thấy liên kết này hữu ích:

AES CTR 256 Encryption Mode of operation on OpenSSL

1

Tôi đang sử dụng AES CTR 128 chế độ và nó hoạt động. Tôi đang sử dụng libssl1.0.0 (Tôi không chắc chắn nếu tôi trả lời đúng câu hỏi! Tôi hy vọng nó sẽ hữu ích). Đây là một phần của mã của tôi:

EVP_CipherInit_ex(ctx, EVP_aes_128_ctr(), NULL, key, iv,1); 
EVP_CipherUpdate (ctx, ciphertext, &len, plaintext, plaintext_len); 
/* Finalise the encryption. */ 
if(! EVP_CipherFinal_ex(ctx, ciphertext + len, &len)) handleErrors(); 
/*setting padding option*/ 
EVP_CIPHER_CTX_set_padding(ctx,0); 
/* Clean up */ 
EVP_CIPHER_CTX_free(ctx); 
Các vấn đề liên quan