[發明專利]一種Poseidon Hash算法實現電路及其實現方法有效
| 申請號: | 202011607589.3 | 申請日: | 2020-12-30 |
| 公開(公告)號: | CN112787799B | 公開(公告)日: | 2022-07-26 |
| 發明(設計)人: | 俞萍初;呂家力 | 申請(專利權)人: | 浙江螢火蟲區塊鏈科技有限公司 |
| 主分類號: | H04L9/06 | 分類號: | H04L9/06 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 310000 浙江省杭州市濱*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 poseidon hash 算法 實現 電路 及其 方法 | ||
1.一種Poseidon Hash算法實現電路,其特征在于,包括輸入接口(2)、數據圓形跑道電路A(3)、數據圓形跑道電路B(4)、串并轉換電路(5)、并串轉換電路(6)、輸出接口(7)、標量加電路(1),所述輸入接口(2)與數據圓形跑道電路A(3)相連,所述輸出接口(7)、串并轉換電路(5)、并串轉換電路(6)都與數據圓形跑道電路A(3)相連,所述串并轉換電路(5)通過數據圓形跑道電路B(4)與并串轉換電路(6)相連,所述數據圓形跑道電路A(3)為串行跑道,所述數據圓形跑道電路B(4)為并行跑道,所述輸入接口(2)經過標量加電路(1)與數據圓形跑道電路A(3)相連,所述數據圓形跑道電路A(3)包括切換開關MUXA(37)、標量冪運算電路A(31)、矩陣乘法電路A(32)、圈數判斷模塊A(33)、圈計數器電路A(34)、切換開關MUXC(35)、fifo存儲器A(36),所述標量加電路(1)與切換開關MUXA(37)相連,所述切換開關MUXA(37)經過標量冪運算電路A(31)與矩陣乘法電路A(32)相連,后連接到圈數判斷模塊A(33),所述輸出接口(7)、串并轉換電路(5)、圈計數器電路A(34)都與圈數判斷模塊A(33)相連,所述圈計數器電路A(34)、并串轉換電路(6)都與切換開關MUXC(35)相連,所述切換開關MUXC(35)通過fifo存儲器A(36)與切換開關MUXA(37)相連,所述數據圓形跑道電路B(4)包括切換開關MUXB(41)、標量冪運算電路B(42)、矩陣乘法電路B(43)、圈數判斷模塊B(44)、圈計數器計數電路B(45)、fifo存儲器B(46),所述串并轉換電路(5)與切換開關MUXB(41)相連,所述切換開關MUXB(41)通過標量冪運算電路B(42)與矩陣乘法電路B(43)相連,所述矩陣乘法電路B(43)、并串轉換電路(6)都與圈數判斷模塊B(44)相連,所述圈數判斷模塊B(44)通過圈計數器計數電路B(45)與fifo存儲器B(46)相連,所述fifo存儲器B(46)與切換開關MUXB(41)相連。
2.一種Poseidon Hash算法實現電路的實現方法,其特征在于,包括如下步驟:
步驟1:輸入接口(2)串行輸入單維數組A[n];
步驟2:輸入接口(2)將單維數組A[n]傳送給標量加電路(1),使得單維數組A[n]增加一個常量數據變成n+1個數據的數組A[n+1],然后將數組A[n+1]中每個數據加上一個各自的常量,得到新的一維數組B[n+1];
步驟3:標量加電路(1)將圈數A設定為1,標量加電路(1)將新的一維數組B[n+1]和圈數A傳送給數據圓形跑道電路A(3),然后新的一維數組B[n+1]和圈數A在數據圓形跑道電路A(3)中跑4圈后得到新單維數組C[n+1],然后串并轉換電路(5)從數據圓形跑道電路A(3)串行接收新單維數組C[n+1],然后把新單維數組C[n+1]轉成(n+1)/2個數據并行的數組D[n+1],并把并行的數組D[n+1]傳給數據圓形跑道電路B(4);
步驟4:串并轉換電路(5)將圈數B設定為1,數據圓形跑道電路B(4)接收從串并轉換電路(5)傳過來的數組D[n+1]和圈數B,然后數組D[n+1]和圈數B在數據圓形跑道電路B(4)中跑57圈后,生成新數組G[n+1],并把新數組G[n+1]傳給并串轉換電路(6);
步驟5:并串轉換電路(6)從數據圓形跑道電路B(4)中并行接收新數組G[n+1],并把新數組G[n+1]轉換成數組F[n+1],并串轉換電路(6)將數組F[n+1]串行發送給數據圓形跑道電路A(3);
步驟6:并串轉換電路(6)將圈數A設定為5,數據圓形跑道電路A(3)從并串轉換電路(6)接收數組F[n+1]和圈數A,然后數組F[n+1]和圈數A在數據圓形跑道電路A(3)再次跑4圈后生成新的數組E[n+1],取新的數組E[n+1]中第二個數據E2傳給輸出接口(7)進行輸出,數組E[n+1]中的其它數據丟棄;
所述新的一維數組B[n+1]和圈數A在數據圓形跑道電路A(3)中跑4圈的步驟如下:
步驟a:切換開關MUXA(37)接收新的一維數組B[n+1]和圈數A;
步驟b:切換開關MUXA(37)將新的一維數組B[n+1]和圈數A傳送給標量冪運算電路A(31),標量冪運算電路A(31)對新的一維數組B[n+1]中的每個數據進行5次方運算,并再加上一個常數,生成新的數組Y[n+1],即:Yn+1=Bn+15+α,所述α為常數;
步驟c:標量冪運算電路A(31)將數組Y[n+1]和圈數A串行傳給矩陣乘法電路A(32),然后矩陣乘法電路A(32)將數組Y[n+1]同常數二維矩陣M[n+1][n+1]相乘,生成新的一維數組Z[n+1];
步驟d:矩陣乘法電路A(32)將數組Z[n+1]和圈數A傳送給圈數判斷模塊A(33),然后圈數判斷模塊A(33)判斷圈數A是否為4,若圈數A為4,則圈數判斷模塊A(33)向串并轉換電路(5)輸出新單維數組C[n+1],并退出,否則圈數判斷模塊A(33)將數組Z[n+1]和圈數A傳送給圈計數器電路A(34),并且圈計數器電路A(34)將圈數A加1,然后圈計數器電路A(34)將數組Z[n+1]和圈數A傳送給切換開關MUXC(35),然后切換開關MUXC(35)將數組Z[n+1]和圈數A通過fifo存儲器A(36)傳送給切換開關MUXA(37),并將數組Z[n+1]設定為新的一圈的數組X[n+1],然后轉到步驟a;
所述數組F[n+1]和圈數A在數據圓形跑道電路A(3)再次跑4圈的步驟如下:
步驟a:切換開關MUXA(37)接收數組F[n+1]和圈數A;
步驟b:切換開關MUXA(37)將數組F[n+1]和圈數A傳送給標量冪運算電路A(31),標量冪運算電路A(31)對數組F[n+1]中的每個數據進行5次方運算,并再加上一個常數,生成新的數組W[n+1],即:Wn+1=Fn+15+β,所述β為常數;
步驟c:標量冪運算電路A(31)將數組W[n+1]和圈數A串行傳給矩陣乘法電路A(32),然后矩陣乘法電路A(32)將數組W[n+1]同常數二維矩陣M[n+1][n+1]相乘,生成新的一維數組K[n+1];
步驟d:矩陣乘法電路A(32)將數組K[n+1]和圈數A傳送給圈數判斷模塊A(33),然后圈數判斷模塊A(33)判斷圈數A是否為8,若圈數A為8,則圈數判斷模塊A(33)向輸出接口(7)輸出,并退出,否則圈數判斷模塊A(33)將數組K[n+1]和圈數A傳送給圈計數器電路A(34),并且圈計數器電路A(34)將圈數A加1,然后圈計數器電路A(34)將數組K[n+1]和圈數A傳送給切換開關MUXC(35),然后切換開關MUXC(35)將數組K[n+1]和圈數A通過fifo存儲器A(36)傳送給切換開關MUXA(37),并將數組K[n+1]設定為新的一圈的數組F[n+1],然后轉到步驟a;
所述數組D[n+1]在數據圓形跑道電路B(4)中跑57圈的流程如下:
步驟s1:切換開關MUXB(41)接收串并轉換電路(5)傳過來的數組D[n+1]和圈數B;
步驟s2:切換開關MUXB(41)將數組D[n+1]、圈數B發送給標量冪運算電路B(42),然后標量冪運算電路B(42)對數組D[n+1]中的D[0]進行D[0]5+const計算,數組D[n+1]中其它數組數據不變,所述const為常數,從而得到新數組J[n+1];
步驟s3:標量冪運算電路B(42)將新數組J[n+1]、圈數B發送給矩陣乘法電路B(43),矩陣乘法電路B(43)將新數組J[n+1]乘上一個N[n+1][n+1]的二維矩陣,得到新數組H[n+1],之后將新數組H[n+1]、圈數B進入圈數判斷模塊B(44);
步驟s4:圈數判斷模塊B(44)判斷圈數B是否為57,若是,則圈數判斷模塊B(44)向并串轉換電路(6)輸出且退出,否則圈數判斷模塊B(44)向圈計數器計數電路B(45)發送數組H[n+1],與此同時,圈計數器計數電路B(45)將圈數B加1;
步驟s5:圈計數器計數電路B(45)通過fifo存儲器B(46)向切換開關MUXB(41)發送數組H[n+1]和圈數B,并將數組H[n+1]設定新一圈的數組D[n+1],轉到步驟s1。
3.根據權利要求2所述一種Poseidon Hash算法實現電路的實現方法,其特征在于,所述N[n+1][n+1]的二維矩陣的排列為
W0 V0 V1 V2 … Vn-3 Vn-2 Vn-1
W1 1 0 0 … 0 0 0
W2 0 1 0 … 0 0 0
…………………………
…………………………
…………………………
Wn-2 0 0 0 … 1 0 0
Wn-1 0 0 0 … 0 1 0
Wn 0 0 0 … 0 0 1,所述V0、V1、V2…Vn-3、Vn-2、Vn-1都為常數,所述W0、W1、W2…Wn-2、Wn-1、Wn都為常數。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于浙江螢火蟲區塊鏈科技有限公司,未經浙江螢火蟲區塊鏈科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011607589.3/1.html,轉載請聲明來源鉆瓜專利網。





