Cryptography

函式 SHA256 中呼叫的 3 個參數是什麼?

  • May 31, 2019
void sha256(struct sha256 *sha, const void *p, size_t size)
{
   struct sha256_ctx ctx;

   sha256_init(&ctx);
   sha256_update(&ctx, p, size);
   sha256_done(&ctx, sha);
}

我試圖在 c-lightning 中呼叫這個函式,但我對函式參數是什麼感到困惑。

讓我們剖析一下這個函式呼叫:

void sha256(struct sha256 *sha, const void *p, size_t size)

首先我們意識到返回值是void意味著函式不返回數據的sha256。但是我們看到第一個參數struct sha256 *sha是一個指向 a 的sha256 struct指針sha。這表明我們傳遞給函式的指針隨後將包含計算的雜湊值。

第二個參數const void *p是一個常量 void 指針。這意味著該函式不關心它為其計算雜湊的數據的數據類型,並且它將無法修改指針指向的記憶體。當我們想要計算一些我們不希望這些數據被更改的數據的雜湊值時,這是有道理的。計算雜湊也是一個二進制操作,它可以在任何數據類型的二進製表示上進行。

這將我們帶到第三個參數size_t size,它應該是第二個參數指向的數據的大小。我假設某處有一個定義為整數的typedef語句。size_t由於第二個參數只是一個指向要為其計算雜湊的資料結構的指針,因此函式需要知道要處理多少記憶體。

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