Sha256

使用openssl在c ++中獲取sha256雜湊的正確方法?

  • December 30, 2021

給定以下變數:

unsigned char text [] = "Test String";
unsigned int len = strlen ((const char*) text);
unsigned char hash [SHA256_DIGEST_LENGTH];

有沒有理由這樣做…

SHA256_CTX sha256;
SHA256_Init (&sha256);
SHA256_Update (&sha256, text, len);
SHA256_Final (hash, &sha256);

而不是簡單地這樣做?

SHA256 (text, len, hash);

對我來說,它們都產生相同的結果。有沒有可能沒有的情況?

此外,SHA256 函式是否總是返回作為其第三個參數傳遞的相同指針,還是在某些情況下它可能返回其他內容?

這可能更適合在Cryptography StackExchange上提出。

認為SHA256()_CTX, _Init, _Update, _Final功能更可取。IIRC,這些後面的“低級”功能不推薦用於外部使用:

SHA256 低級 API 不推薦用於公共使用,但仍可用於內部使用。來源 1來源 2

推薦的方法是使用 EVP 介面,它就是這樣SHA256()做的。

根據這裡的程式碼,返回值要麼是第三個參數,要麼是空指針。

引用自:https://bitcoin.stackexchange.com/questions/111506