[發(fā)明專利]一種Poseidon Hash算法實現(xiàn)電路及其實現(xiàn)方法有效
| 申請?zhí)枺?/td> | 202011607589.3 | 申請日: | 2020-12-30 |
| 公開(公告)號: | CN112787799B | 公開(公告)日: | 2022-07-26 |
| 發(fā)明(設(shè)計)人: | 俞萍初;呂家力 | 申請(專利權(quán))人: | 浙江螢火蟲區(qū)塊鏈科技有限公司 |
| 主分類號: | H04L9/06 | 分類號: | H04L9/06 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 310000 浙江省杭州市濱*** | 國省代碼: | 浙江;33 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 poseidon hash 算法 實現(xiàn) 電路 及其 方法 | ||
1.一種Poseidon Hash算法實現(xiàn)電路,其特征在于,包括輸入接口(2)、數(shù)據(jù)圓形跑道電路A(3)、數(shù)據(jù)圓形跑道電路B(4)、串并轉(zhuǎn)換電路(5)、并串轉(zhuǎn)換電路(6)、輸出接口(7)、標量加電路(1),所述輸入接口(2)與數(shù)據(jù)圓形跑道電路A(3)相連,所述輸出接口(7)、串并轉(zhuǎn)換電路(5)、并串轉(zhuǎn)換電路(6)都與數(shù)據(jù)圓形跑道電路A(3)相連,所述串并轉(zhuǎn)換電路(5)通過數(shù)據(jù)圓形跑道電路B(4)與并串轉(zhuǎn)換電路(6)相連,所述數(shù)據(jù)圓形跑道電路A(3)為串行跑道,所述數(shù)據(jù)圓形跑道電路B(4)為并行跑道,所述輸入接口(2)經(jīng)過標量加電路(1)與數(shù)據(jù)圓形跑道電路A(3)相連,所述數(shù)據(jù)圓形跑道電路A(3)包括切換開關(guān)MUXA(37)、標量冪運算電路A(31)、矩陣乘法電路A(32)、圈數(shù)判斷模塊A(33)、圈計數(shù)器電路A(34)、切換開關(guān)MUXC(35)、fifo存儲器A(36),所述標量加電路(1)與切換開關(guān)MUXA(37)相連,所述切換開關(guān)MUXA(37)經(jīng)過標量冪運算電路A(31)與矩陣乘法電路A(32)相連,后連接到圈數(shù)判斷模塊A(33),所述輸出接口(7)、串并轉(zhuǎn)換電路(5)、圈計數(shù)器電路A(34)都與圈數(shù)判斷模塊A(33)相連,所述圈計數(shù)器電路A(34)、并串轉(zhuǎn)換電路(6)都與切換開關(guān)MUXC(35)相連,所述切換開關(guān)MUXC(35)通過fifo存儲器A(36)與切換開關(guān)MUXA(37)相連,所述數(shù)據(jù)圓形跑道電路B(4)包括切換開關(guān)MUXB(41)、標量冪運算電路B(42)、矩陣乘法電路B(43)、圈數(shù)判斷模塊B(44)、圈計數(shù)器計數(shù)電路B(45)、fifo存儲器B(46),所述串并轉(zhuǎn)換電路(5)與切換開關(guān)MUXB(41)相連,所述切換開關(guān)MUXB(41)通過標量冪運算電路B(42)與矩陣乘法電路B(43)相連,所述矩陣乘法電路B(43)、并串轉(zhuǎn)換電路(6)都與圈數(shù)判斷模塊B(44)相連,所述圈數(shù)判斷模塊B(44)通過圈計數(shù)器計數(shù)電路B(45)與fifo存儲器B(46)相連,所述fifo存儲器B(46)與切換開關(guān)MUXB(41)相連。
2.一種Poseidon Hash算法實現(xiàn)電路的實現(xiàn)方法,其特征在于,包括如下步驟:
步驟1:輸入接口(2)串行輸入單維數(shù)組A[n];
步驟2:輸入接口(2)將單維數(shù)組A[n]傳送給標量加電路(1),使得單維數(shù)組A[n]增加一個常量數(shù)據(jù)變成n+1個數(shù)據(jù)的數(shù)組A[n+1],然后將數(shù)組A[n+1]中每個數(shù)據(jù)加上一個各自的常量,得到新的一維數(shù)組B[n+1];
步驟3:標量加電路(1)將圈數(shù)A設(shè)定為1,標量加電路(1)將新的一維數(shù)組B[n+1]和圈數(shù)A傳送給數(shù)據(jù)圓形跑道電路A(3),然后新的一維數(shù)組B[n+1]和圈數(shù)A在數(shù)據(jù)圓形跑道電路A(3)中跑4圈后得到新單維數(shù)組C[n+1],然后串并轉(zhuǎn)換電路(5)從數(shù)據(jù)圓形跑道電路A(3)串行接收新單維數(shù)組C[n+1],然后把新單維數(shù)組C[n+1]轉(zhuǎn)成(n+1)/2個數(shù)據(jù)并行的數(shù)組D[n+1],并把并行的數(shù)組D[n+1]傳給數(shù)據(jù)圓形跑道電路B(4);
步驟4:串并轉(zhuǎn)換電路(5)將圈數(shù)B設(shè)定為1,數(shù)據(jù)圓形跑道電路B(4)接收從串并轉(zhuǎn)換電路(5)傳過來的數(shù)組D[n+1]和圈數(shù)B,然后數(shù)組D[n+1]和圈數(shù)B在數(shù)據(jù)圓形跑道電路B(4)中跑57圈后,生成新數(shù)組G[n+1],并把新數(shù)組G[n+1]傳給并串轉(zhuǎn)換電路(6);
步驟5:并串轉(zhuǎn)換電路(6)從數(shù)據(jù)圓形跑道電路B(4)中并行接收新數(shù)組G[n+1],并把新數(shù)組G[n+1]轉(zhuǎn)換成數(shù)組F[n+1],并串轉(zhuǎn)換電路(6)將數(shù)組F[n+1]串行發(fā)送給數(shù)據(jù)圓形跑道電路A(3);
步驟6:并串轉(zhuǎn)換電路(6)將圈數(shù)A設(shè)定為5,數(shù)據(jù)圓形跑道電路A(3)從并串轉(zhuǎn)換電路(6)接收數(shù)組F[n+1]和圈數(shù)A,然后數(shù)組F[n+1]和圈數(shù)A在數(shù)據(jù)圓形跑道電路A(3)再次跑4圈后生成新的數(shù)組E[n+1],取新的數(shù)組E[n+1]中第二個數(shù)據(jù)E2傳給輸出接口(7)進行輸出,數(shù)組E[n+1]中的其它數(shù)據(jù)丟棄;
所述新的一維數(shù)組B[n+1]和圈數(shù)A在數(shù)據(jù)圓形跑道電路A(3)中跑4圈的步驟如下:
步驟a:切換開關(guān)MUXA(37)接收新的一維數(shù)組B[n+1]和圈數(shù)A;
步驟b:切換開關(guān)MUXA(37)將新的一維數(shù)組B[n+1]和圈數(shù)A傳送給標量冪運算電路A(31),標量冪運算電路A(31)對新的一維數(shù)組B[n+1]中的每個數(shù)據(jù)進行5次方運算,并再加上一個常數(shù),生成新的數(shù)組Y[n+1],即:Yn+1=Bn+15+α,所述α為常數(shù);
步驟c:標量冪運算電路A(31)將數(shù)組Y[n+1]和圈數(shù)A串行傳給矩陣乘法電路A(32),然后矩陣乘法電路A(32)將數(shù)組Y[n+1]同常數(shù)二維矩陣M[n+1][n+1]相乘,生成新的一維數(shù)組Z[n+1];
步驟d:矩陣乘法電路A(32)將數(shù)組Z[n+1]和圈數(shù)A傳送給圈數(shù)判斷模塊A(33),然后圈數(shù)判斷模塊A(33)判斷圈數(shù)A是否為4,若圈數(shù)A為4,則圈數(shù)判斷模塊A(33)向串并轉(zhuǎn)換電路(5)輸出新單維數(shù)組C[n+1],并退出,否則圈數(shù)判斷模塊A(33)將數(shù)組Z[n+1]和圈數(shù)A傳送給圈計數(shù)器電路A(34),并且圈計數(shù)器電路A(34)將圈數(shù)A加1,然后圈計數(shù)器電路A(34)將數(shù)組Z[n+1]和圈數(shù)A傳送給切換開關(guān)MUXC(35),然后切換開關(guān)MUXC(35)將數(shù)組Z[n+1]和圈數(shù)A通過fifo存儲器A(36)傳送給切換開關(guān)MUXA(37),并將數(shù)組Z[n+1]設(shè)定為新的一圈的數(shù)組X[n+1],然后轉(zhuǎn)到步驟a;
所述數(shù)組F[n+1]和圈數(shù)A在數(shù)據(jù)圓形跑道電路A(3)再次跑4圈的步驟如下:
步驟a:切換開關(guān)MUXA(37)接收數(shù)組F[n+1]和圈數(shù)A;
步驟b:切換開關(guān)MUXA(37)將數(shù)組F[n+1]和圈數(shù)A傳送給標量冪運算電路A(31),標量冪運算電路A(31)對數(shù)組F[n+1]中的每個數(shù)據(jù)進行5次方運算,并再加上一個常數(shù),生成新的數(shù)組W[n+1],即:Wn+1=Fn+15+β,所述β為常數(shù);
步驟c:標量冪運算電路A(31)將數(shù)組W[n+1]和圈數(shù)A串行傳給矩陣乘法電路A(32),然后矩陣乘法電路A(32)將數(shù)組W[n+1]同常數(shù)二維矩陣M[n+1][n+1]相乘,生成新的一維數(shù)組K[n+1];
步驟d:矩陣乘法電路A(32)將數(shù)組K[n+1]和圈數(shù)A傳送給圈數(shù)判斷模塊A(33),然后圈數(shù)判斷模塊A(33)判斷圈數(shù)A是否為8,若圈數(shù)A為8,則圈數(shù)判斷模塊A(33)向輸出接口(7)輸出,并退出,否則圈數(shù)判斷模塊A(33)將數(shù)組K[n+1]和圈數(shù)A傳送給圈計數(shù)器電路A(34),并且圈計數(shù)器電路A(34)將圈數(shù)A加1,然后圈計數(shù)器電路A(34)將數(shù)組K[n+1]和圈數(shù)A傳送給切換開關(guān)MUXC(35),然后切換開關(guān)MUXC(35)將數(shù)組K[n+1]和圈數(shù)A通過fifo存儲器A(36)傳送給切換開關(guān)MUXA(37),并將數(shù)組K[n+1]設(shè)定為新的一圈的數(shù)組F[n+1],然后轉(zhuǎn)到步驟a;
所述數(shù)組D[n+1]在數(shù)據(jù)圓形跑道電路B(4)中跑57圈的流程如下:
步驟s1:切換開關(guān)MUXB(41)接收串并轉(zhuǎn)換電路(5)傳過來的數(shù)組D[n+1]和圈數(shù)B;
步驟s2:切換開關(guān)MUXB(41)將數(shù)組D[n+1]、圈數(shù)B發(fā)送給標量冪運算電路B(42),然后標量冪運算電路B(42)對數(shù)組D[n+1]中的D[0]進行D[0]5+const計算,數(shù)組D[n+1]中其它數(shù)組數(shù)據(jù)不變,所述const為常數(shù),從而得到新數(shù)組J[n+1];
步驟s3:標量冪運算電路B(42)將新數(shù)組J[n+1]、圈數(shù)B發(fā)送給矩陣乘法電路B(43),矩陣乘法電路B(43)將新數(shù)組J[n+1]乘上一個N[n+1][n+1]的二維矩陣,得到新數(shù)組H[n+1],之后將新數(shù)組H[n+1]、圈數(shù)B進入圈數(shù)判斷模塊B(44);
步驟s4:圈數(shù)判斷模塊B(44)判斷圈數(shù)B是否為57,若是,則圈數(shù)判斷模塊B(44)向并串轉(zhuǎn)換電路(6)輸出且退出,否則圈數(shù)判斷模塊B(44)向圈計數(shù)器計數(shù)電路B(45)發(fā)送數(shù)組H[n+1],與此同時,圈計數(shù)器計數(shù)電路B(45)將圈數(shù)B加1;
步驟s5:圈計數(shù)器計數(shù)電路B(45)通過fifo存儲器B(46)向切換開關(guān)MUXB(41)發(fā)送數(shù)組H[n+1]和圈數(shù)B,并將數(shù)組H[n+1]設(shè)定新一圈的數(shù)組D[n+1],轉(zhuǎn)到步驟s1。
3.根據(jù)權(quán)利要求2所述一種Poseidon Hash算法實現(xiàn)電路的實現(xiàn)方法,其特征在于,所述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都為常數(shù),所述W0、W1、W2…Wn-2、Wn-1、Wn都為常數(shù)。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于浙江螢火蟲區(qū)塊鏈科技有限公司,未經(jīng)浙江螢火蟲區(qū)塊鏈科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011607589.3/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 一種讀取網(wǎng)絡(luò)資源站點信息的方法及其系統(tǒng)以及搜索引擎
- 一種密碼的管理方法和設(shè)備
- 一種基于hash處理的詞匯管理方法和設(shè)備
- 一種支持多hashmap數(shù)據(jù)庫集群系統(tǒng)不停機的擴容方法
- 一種Linux操作系統(tǒng)中數(shù)據(jù)的保護方法
- 一種獲取終端屬性的方法及系統(tǒng)
- 一種批量獲取終端屬性的方法及系統(tǒng)
- 一種通過構(gòu)建hash鏈表獲取終端屬性的方法及系統(tǒng)
- 一種基于Hashmap緩存機制的SD卡讀寫方法及系統(tǒng)
- 一種報文轉(zhuǎn)發(fā)方法及裝置
- 互動業(yè)務(wù)終端、實現(xiàn)系統(tǒng)及實現(xiàn)方法
- 街景地圖的實現(xiàn)方法和實現(xiàn)系統(tǒng)
- 游戲?qū)崿F(xiàn)系統(tǒng)和游戲?qū)崿F(xiàn)方法
- 圖像實現(xiàn)裝置及其圖像實現(xiàn)方法
- 增強現(xiàn)實的實現(xiàn)方法以及實現(xiàn)裝置
- 軟件架構(gòu)的實現(xiàn)方法和實現(xiàn)平臺
- 數(shù)值預(yù)報的實現(xiàn)方法及實現(xiàn)系統(tǒng)
- 空調(diào)及其冬眠控制模式實現(xiàn)方法和實現(xiàn)裝置以及實現(xiàn)系統(tǒng)
- 空調(diào)及其睡眠控制模式實現(xiàn)方法和實現(xiàn)裝置以及實現(xiàn)系統(tǒng)
- 輸入設(shè)備實現(xiàn)方法及其實現(xiàn)裝置





