2011-02-26 90 views

回答

11

你檢查了OpenSSL。我自己沒有使用它,但文檔說它支持它。

這裏是few more implementations.

示例代碼

md = EVP_get_digestbyname("sha512"); 
EVP_MD_CTX_init(&mdctx); 
EVP_DigestInit_ex(&mdctx, md, NULL); 
EVP_DigestUpdate(&mdctx, mess1, strlen(mess1)); 
EVP_DigestUpdate(&mdctx, mess2, strlen(mess2)); 
EVP_DigestFinal_ex(&mdctx, md_value, &md_len); 
EVP_MD_CTX_cleanup(&mdctx); 
+4

heh。你擊敗了我,因爲「OpenSSL支持SHA512」。只有24個字符,並且答案必須至少爲30. – 2011-02-26 04:41:22

+0

您能否鏈接到我可用於計算散列的函數的文檔? – 2011-02-26 04:50:22

+0

向答案添加了示例代碼。 – Zimbabao 2011-02-26 06:01:00

0

名單上有此取得了巨大成功:

Secure Hash Algorithm (SHA)

BSD許可證。它涵蓋了SHA-1,SHA-224,SHA-256,SHA-384和SHA-512。它具有整齊的幫手功能,簡化了步驟:

SHA256_Data(const sha2_byte* data, size_t len, char digest[SHA256_DIGEST_STRING_LENGTH]) 

它還有很多性能調整選項。

5

我使用Botan用於各種加密目的。它有許多種SHA(-512)算法。

當我在查看C++加密庫時,我也發現了Crypto++。對我而言,Botan API的風格更直接,但這兩個庫都很紮實且成熟。

+0

你知道sha512文檔在哪裏用於Botan嗎? – 2014-02-24 22:07:44

+0

@Gracchus在許多情況下,某些算法沒有特定的文檔。原因是每個算法都是作爲一個過濾器來實現的,您可以非常類似地使用它。如果您對特定參數感興趣,請在維基百科上查找算法本身,因爲實現應該是規範的。標題中的評論可能也有幫助。 [manual](http://botan.randombit.net/manual/)提供了有關使用過濾器的信息。 – 2014-02-26 11:13:31

4

檢查this code。它是完全便攜的,不需要任何額外的配置。只有STL就足夠了。你只需要在需要的時候宣佈

#include "sha512.hh" 

,然後使用功能

sw::sha512::calculate("SHA512 of std::string") // hash of a string, or 
sw::sha512::file(path) // hash of a file specified by its path, or 
sw::sha512::calculate(&data, sizeof(data)) // hash of any block of data 

。它們的返回值是std::string