Cryptography
函式 SHA256 中呼叫的 3 個參數是什麼?
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
由於第二個參數只是一個指向要為其計算雜湊的資料結構的指針,因此函式需要知道要處理多少記憶體。