如何在charm-crypto中擁有一個從組元素映射到一定大小的二進製字元串的雜湊函式?
我在使用charm-crypto庫進行程式時遇到問題。charm-crypto 中用於配對組元素的雜湊函式只能從字元串映射到特定欄位: $ \mathbb Z_r $ , $ G_1 $ 或者 $ G_2 $ .
例子: $$ \begin{align} H_1: {0, 1}^\to\ &G_1\ H_2: {0, 1}^\to\ &Z_r\ H_3: {0, 1}^*\to\ &G_2\ \end{align} $$
我正在使用這篇研究論文中的關鍵字搜尋來實施無證書公鑰加密方案。在全域設置部分的這個算法中,我想要一個雜湊函式 $ H_4: G_2\to {0, 1}^n $ 有一段時間 $ n $ 即,從組元素映射到長度的二進製字元串 $ n $ . 在這種情況下,組 $ G_2 $ 由橢圓曲線上的點組成。
有人可以指導我如何實現雜湊映射 $ H4 $ 在魅力加密?我將不勝感激在這方面的任何幫助。
我想要一個雜湊函式 $ H_4: G_2\to {0, 1}^n $ 有一段時間 $ n $ 即,從組元素映射到長度的二進製字元串 $ n $ . 在這種情況下,組 $ G_2 $ 由橢圓曲線上的點組成。
如果 $ r\in G_2 $ ,我們可以定義 $ H_4(r) $ 作為 $ \operatorname{SHAKE256}(R,n) $ 在哪裡 $ R $ 是一個獨特的代表 $ r $ 作為位串,和 $ \operatorname{SHAKE256} $ 如FIPS 202中所定義。
一種獲取方式 $ R $ : 如果點 $ r $ 有笛卡爾座標 $ (x,y) $ 在現場 $ \mathbb F_p $ 和 $ p $ 主要, $ 2^{8(\ell-1)}<p<2^{8\ell} $ , $ 0\le x<p $ , $ 0\le y<q $ ,那麼我們可以使用 $ R=\operatorname{I2OSP}(x,\ell)\mathbin|\operatorname{I2OSP}(y,\ell) $ 在哪裡 $ \operatorname{I2OSP} $ 是標準的大端轉換為八位字節字元串(如在例如PKCS#1中使用的)。這可以適應其他領域。
如果 $ \operatorname{SHAKE256} $ 用於構造其他雜湊 $ H_1 $ , $ H_2 $ , $ H_3 $ ,謹慎的做法是在 $ \operatorname{SHAKE256} $ 具有不同的常數。