2011-09-18 38 views
5

Tôi đang chuyển một ứng dụng PHP sang C++. Việc áp dụng PHP đang sử dụng chức năng này:Tương đương C++ của hàm băm_hmac của PHP là gì?

hash_hmac - Tạo một giá trị băm có khóa bằng cách sử dụng phương pháp HMAC

Nếu tôi có mã này, những gì được nó thực sự làm gì?

$sStr = hash_hmac ('sha256', $mydata,$mykey, $raw = true) 

Tôi biết nó mã hóa một số dữ liệu bằng cách sử dụng sha256 và khóa của tôi, nhưng làm cách nào tôi có thể thực hiện điều này trong C++?

Tôi đã tìm thấy các thư viện hmacsha2 nhưng không chắc chắn chúng có phải là những gì tôi cần hay không.

+0

Tại sao bạn muốn cổng mã PHP C++ mã? – daGrevis

+1

tăng hiệu suất – user63898

Trả lời

16

Tôi sẽ xem xét xem xét OpenSSL, một thư viện mật mã di động và hoàn chỉnh (mặc dù tên của nó, nó không chỉ làm SSL). Nó có một HMAC library mà bạn chắc chắn có thể quấn để có được chức năng tương tự.

Dưới đây là một ví dụ về cách sử dụng thư viện OpenSSL HMAC', lấy từ another question on StackOverflow (mỏ chú thích):

// Initialize HMAC object. 
HMAC_CTX ctx; 
HMAC_CTX_init(&ctx); 

    // Set HMAC key. 
HMAC_Init_ex(&ctx, key, 16, EVP_sha256(), NULL); 

    // May be called repeatedly to insert all your data. 
HMAC_Update(&ctx, data, 8); 

    // Finish HMAC computation and fetch result. 
HMAC_Final(&ctx, result, &result_len); 

    // Done with HMAC object. 
HMAC_CTX_cleanup(&ctx); 
Các vấn đề liên quan