$ G \space is \space an \space elliptic \space curve \space group \space G \space with \space order \space q$ and three hash functions are defined as this: $$ H_1: \{0,1\}^*\times G \rightarrow Z^*_q $$ $$ H_2: \{0,1\}^*\times G \times G \rightarrow Z^*_q $$ $$ H_3: \{0,1\}^*\times Z^*_q \times G \times G \rightarrow Z^*_q $$ I searched and found this question and as far as I understand $ H_0: \{0,1\}^* \rightarrow Z^*_q $ maps some arbitrary length of zeros and ones to $Z_q^*$ but what do H1,H2, and H3 do? why use G multiple times? what would be the reason for this?
1 Answer
what do H1, H2 and H3 do?
$$ H_1: \{0,1\}^*\times G \rightarrow Z^*_q $$
$H_1$ takes some arbitrary length string of zeros and ones, along with an element of the group G, and maps them into a element of $Z_q^*$
$$ H_2: \{0,1\}^*\times G \times G \rightarrow Z^*_q $$
$H_2$ takes some arbitrary length string of zeros and ones, along with two elements of the group G, and maps them into a element of $Z_q^*$
And, so to answer your question:
why use G multiple times?
We use G two times because $H_2$ has two inputs which are both elements of G (and the bitstring). Similarly, the standard curve addition operation can be summarized as $+: G \times G \rightarrow G$, that is, it takes two elements of G is input, and has an element of G as an output.
And, to complete your questions:
$$ H_3: \{0,1\}^*\times Z^*_q \times G \times G \rightarrow Z^*_q $$
$H_3$ has inputs which is the bitstring, an element of $Z^*_q$ and two elements of $G$, and maps them into an element of $Z^*_q$