最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Hacker Dōjō 密碼學(xué)專題一:2哈希函數(shù)

2023-03-02 19:45 作者:DoraHacks  | 我要投稿

Hacker?Dōjō?Web3前沿技術(shù) workshop文稿

研究種類:密碼學(xué)-哈希函數(shù)

資助金額:100 USDT

Bounty鏈接:https://dorahacks.io/zh/daobounty/138

Workshop回顧:?https://b23.tv/QTKV797

內(nèi)容貢獻(xiàn)者:密碼學(xué)專家?Lynndell

本項(xiàng)目由Hacker?Dōjō?資助,文章轉(zhuǎn)載請(qǐng)注明出處。

??學(xué)習(xí)量子計(jì)算、密碼學(xué)、Space等Web3前沿技術(shù)

??認(rèn)領(lǐng)Bounty,賺取賞金

??參與Hackathon,獲得資助

更多Web3精彩技術(shù)分享盡在Dōjō??

WeChat: @HackerDojo0


密碼學(xué)專題一課程安排

第一課:對(duì)稱加密?(DES、AES、五種加密模式)

第二課:哈希函數(shù)?(SHA2、SHA3、MiMC、Rescue、Poseidon)

第三課:群與公鑰加密?(群,橢圓曲線群,Diffie-Hellman密鑰交換,ElGamal加密)

第四課:數(shù)字簽名?(BLS、Schnorr、EdDSA、ECDSA)

第五課:零知識(shí)證明?(Sigma零知識(shí)證明、Groth16、PLONK)


第二課:哈希函數(shù)

基本概念

哈希函數(shù):?將任意長(zhǎng)度的消息,映射為一個(gè)固定長(zhǎng)(256bit)的隨機(jī)數(shù)。這段隨機(jī)數(shù)稱為消息摘要。

關(guān)鍵性質(zhì):

【1】單項(xiàng)性:?已知哈希值?Y?,無(wú)法在多項(xiàng)式時(shí)間內(nèi)計(jì)算出原象?X?;

【2】弱抗碰撞性:已知(X, Y),無(wú)法在多項(xiàng)式時(shí)間找到X’,使得Y=Hash(X’);

【3】強(qiáng)抗碰撞性?:?攻擊者無(wú)法尋找?,滿足?;

【4】壓縮性:?通常是將大于或等于?512bit?的數(shù)據(jù)壓縮為?256bit?;

【5】隨機(jī)性:?輸出的?Y?是?256bit?的?0/1?字符串是隨機(jī)的;

【6】可重復(fù)性:?如果輸入?x1=x2?,則輸出的哈希值?Y1=Y2?。


1.?SHA2

1.1?常量與基本運(yùn)算

基礎(chǔ)工具包括:8+64個(gè)初始常量、信息預(yù)處理(數(shù)據(jù)填充)、邏輯運(yùn)算


1.2 常量

8?個(gè)初值常量如下:(256bit = 884)

h0 := 0x6a09e667

h1 := 0xbb67ae85

h2 := 0x3c6ef372

h3 := 0xa54ff53a

h4 := 0x510e527f

h5 := 0x9b05688c

h6 := 0x1f83d9ab

h7 := 0x5be0cd19

來(lái)源:?對(duì)自然數(shù)中前8個(gè)質(zhì)數(shù)(2,3,5,7,11,13,17,19)的平方根的小數(shù)部分取前32bit。
例如:$ \sqrt{2} $小數(shù)部分約為0.414213562373095048,而

0.414213562373095048≈6?16?1+a?16?2+0?16?3+…
于是,質(zhì)數(shù)2的平方根的小數(shù)部分取前32bit就對(duì)應(yīng)出了0x6a09e667。每個(gè)參數(shù)都有來(lái)源根據(jù),沒(méi)有后門(mén)。


64?個(gè)常量如下:

428a2f98 71374491 b5c0fbcf e9b5dba5

3956c25b 59f111f1 923f82a4 ab1c5ed5

d807aa98 12835b01 243185be 550c7dc3

72be5d74 80deb1fe 9bdc06a7 c19bf174

e49b69c1 efbe4786 0fc19dc6 240ca1cc

2de92c6f 4a7484aa 5cb0a9dc 76f988da

983e5152 a831c66d b00327c8 bf597fc7

c6e00bf3 d5a79147 06ca6351 14292967

27b70a85 2e1b2138 4d2c6dfc 53380d13

650a7354 766a0abb 81c2c92e 92722c85

a2bfe8a1 a81a664b c24b8b70 c76c51a3

d192e819 d6990624 f40e3585 106aa070

19a4c116 1e376c08 2748774c 34b0bcb5

391c0cb3 4ed8aa4a 5b9cca4f 682e6ff3

748f82ee 78a5636f 84c87814 8cc70208

90befffa a4506ceb bef9a3f7 c67178f2

來(lái)源:?與8個(gè)哈希初值類似,這些常量是對(duì)自然數(shù)中前64個(gè)質(zhì)數(shù)(2,3,5,7,11,13,17,19,23,29,31,37, 41,43,47,53,59,61,67,71,73,79,83,89,97…)的立方根的小數(shù)部分取前32bit而來(lái)。


1.3?基本運(yùn)算

6個(gè)邏輯運(yùn)算:前4個(gè)用在64輪循環(huán)中,后2個(gè)用在16個(gè)字?jǐn)U展為64個(gè)字的擴(kuò)展中

Ch ( x, y, z ) = ( x ∧ y ) ⊕ ( ?x ∧ z )

Ma ( x, y, z ) = ( x ∧ y ) ⊕ ( x ∧ z ) ⊕ ( y ∧ z )

Σ 0 ( x ) = S2?( x ) ⊕ S13?( x ) ⊕ S22?( x )

Σ 1 ( x ) = S6?( x ) ⊕ S11?( x ) ⊕ S25?( x )

σ 0 ( x ) = S7?( x ) ⊕ S18?( x ) ⊕ R3?( x )

σ 1 ( x ) = S17?( x ) ⊕ S19?( x ) ⊕ R10?( x )

∧ 按位“與”

? 按位“補(bǔ)”

⊕ 按位“異或”

Sn?循環(huán)?右移n個(gè)bit

Rn?右移n個(gè)bit


2.數(shù)據(jù)預(yù)處理(pre-processing)

數(shù)據(jù)填充使整個(gè)消息長(zhǎng)度和結(jié)構(gòu)滿足規(guī)定。

信息的預(yù)處理分為2步:附加填充比特和附加長(zhǎng)度。


2.1 STEP1:填充比特

填充規(guī)則:先補(bǔ)第一個(gè)比特為?1?,然后都補(bǔ)?0?,直到長(zhǎng)度滿足對(duì)?512?取模后余數(shù)是?448?。

需要注意的是,信息必須進(jìn)行填充,也就是說(shuō),即使長(zhǎng)度已經(jīng)滿足對(duì)?512?取模后余數(shù)是?448?,補(bǔ)位也必須要進(jìn)行,這時(shí)要填充?512?個(gè)比特。

因此,填充是至少補(bǔ)一位,最多補(bǔ)?512?位。

例:以信息“abc”為例顯示補(bǔ)位的過(guò)程。

ASCII碼分別是97,98,99

二進(jìn)制編碼為:01100001,01100010,01100011

補(bǔ)位第一步,首先補(bǔ)一個(gè)”1” : 0110000101100010 01100011 1

補(bǔ)位第二步,補(bǔ)423個(gè)“0”:01100001 01100010 01100011 10000000 00000000 … 00000000

補(bǔ)位完成后的數(shù)據(jù)如下(為了簡(jiǎn)介用16進(jìn)制表示):

61626380 00000000 00000000 00000000

00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000

00000000 00000000

在第一步的預(yù)處理后,第二步會(huì)再附加上一個(gè)64bit的數(shù)據(jù),用來(lái)表示原始報(bào)文的長(zhǎng)度信息。而448+64=512,正好拼成了一個(gè)完整的結(jié)構(gòu)。

綜上:


2.2 STEP2:附加長(zhǎng)度值

用一個(gè)?64?位的數(shù)據(jù)來(lái)表示原始消息的長(zhǎng)度。

因此,通過(guò)SHA256計(jì)算的消息長(zhǎng)度必須要小于2^64,當(dāng)然絕大多數(shù)情況這足夠大了。

長(zhǎng)度信息的編碼方式為?64-bit big-endian integer

關(guān)于Big endian的含義,文末給出了補(bǔ)充

回到剛剛的例子,消息“abc”,3個(gè)字符,占用24個(gè)bit

因此,在進(jìn)行了補(bǔ)長(zhǎng)度的操作以后,整個(gè)消息就變成下面這樣了(十六進(jìn)制18 = 十進(jìn)制24)

61626380 00000000 00000000 00000000

00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000018

最終的二進(jìn)制編碼為:


2.3 計(jì)算摘要

現(xiàn)在來(lái)介紹SHA256算法的主體部分,即消息摘要是如何計(jì)算的。

首先:將消息分解成512-bit大小的塊,不足512則根據(jù)上一節(jié)方法填充。


假設(shè)消息M可以被分解為n個(gè)塊,于是整個(gè)算法需要做的就是完成n次迭代,n次迭代的結(jié)果就是最終的哈希值,即256bit的數(shù)字摘要。

一個(gè)256-bit的摘要的初始值H0,經(jīng)過(guò)第一個(gè)數(shù)據(jù)塊進(jìn)行運(yùn)算,得到H1,即完成了第一次迭代H1經(jīng)過(guò)第二個(gè)數(shù)據(jù)塊得到H2,……,依次處理,最后得到Hn,Hn即為最終的256-bit消息摘要將每次迭代進(jìn)行的映射用Map(H_{i-1})= H_i表示,于是迭代可以更形象的展示為:


圖中256-bit的Hi被描述8個(gè)小塊,這是因?yàn)?strong>SHA256?算法中的最小運(yùn)算單元稱為?“?字?”?(?Word?),一個(gè)字是?32?位。

第一次迭代中,映射的初值設(shè)置為前面介紹的8個(gè)哈希初值,如下圖所示:


下面開(kāi)始介紹每一次迭代的內(nèi)容,即映射Map(H_{i-1}) = H_i的具體算法

Map?映射,也就是對(duì)稱加密中的輪函數(shù)function

STEP1?:?擴(kuò)展函數(shù):輸入:512bits,輸出2048bits;?16?個(gè)字?jǐn)U展為?64?個(gè)字,每個(gè)字?32bit

對(duì)于每個(gè)塊?M?(512bits=16*32),分解為16個(gè)32-bit的big-endian的字w[0], …, w[15];

  1. 起始狀態(tài):前16個(gè)字直接由消息的第1個(gè)塊分解得到:512bit=?w[0], …, w[15]

  2. 其余的48個(gè)字由如下迭代公式?得到:Wt=?σ1??(?Wt???2??)+Wt-7+?σ0??(?Wt-15)?**+Wt-16

W161(W14)+W110(W1)+W0

W171(W15)+W120(W2)+W1

,…,

W64

σ0(x) = S7(x) ⊕ S18(x) ⊕ R3(x)

σ1(x) = S17(x) ⊕ S19(x) ⊕ R10(x)

∧ 按位“與”

? 按位“補(bǔ)”

⊕?按位?“?異或?”

Sn?循環(huán)?右移n個(gè)bit

Rn 右移n個(gè)bit

STEP2?:壓縮函數(shù):進(jìn)行?64?次循環(huán);輸入?64?個(gè)字和?64?個(gè)常量?k_i

映射Map(H_{i-1}) = H_i包含64次循環(huán)

即進(jìn)行64次循環(huán)即可完成一次迭代

每次加密循環(huán)可以由下圖描述:

256 = 8 * 32


圖4:64次循環(huán)

Ch(x, y, z) = (x ∧ y) ⊕ (?x ∧ z)

Ma(x, y, z) = (x ∧ y) ⊕ (x ∧ z) ⊕ (y ∧ z)

Σ0(x) = S2(x) ⊕ S13(x) ⊕ S22(x)

Σ1(x) = S6(x) ⊕ S11(x) ⊕ S25(x)

圖中,ABCDEFGH這8個(gè)字(word)在按照一定的規(guī)則進(jìn)行更新,其中

深藍(lán)色方塊?是事先定義好的非線性邏輯函數(shù);

紅色田字方塊?代是:相加后mod232,其中一個(gè)紅色方框是字與常量的模加

Kt+Kt?(mod232)

其中,是Kt 是64個(gè)常量。

ABCDEFGH一開(kāi)始的初始值分別為H_{i-1}(0),H_{i-1}(1),…,H_{i-1}(7)。

Kt是64個(gè)常量,每次循環(huán)使用1個(gè)常量。

Wt是本區(qū)塊產(chǎn)生第t個(gè)word。原消息被切成固定長(zhǎng)度512-bit的區(qū)塊,對(duì)每一個(gè)區(qū)塊,產(chǎn)生64個(gè)word,通過(guò)重復(fù)運(yùn)行循環(huán)n次對(duì)ABCDEFGH這八個(gè)字循環(huán)加密。

Add the compressed chunk to the current hash value:

h0 := h0?+?a

h1 := h1?+?b

h2 := h2?+?c

h3 := h3?+?d

h4 := h4?+?e

h5 := h5?+?f

h6 := h6?+?g

h7 := h7?+?h

最后一次循環(huán)所產(chǎn)生的八個(gè)字合起來(lái)即是第i個(gè)塊對(duì)應(yīng)到的哈希值H_i。

hash?:= h0?||?h1?||?h2?||?h3?||?h4?||?h5?||?h6?||?h7


3. SHA3

3.1 Keccak

采用海綿結(jié)構(gòu)(sponge construction),在預(yù)處理(padding并分成大小相同的塊)后,海綿結(jié)構(gòu)主要分成兩部分:

  • 吸入階段(absorbing phase):將塊x_i傳入算法并處理。

  • 擠出階段(squeezing phase):產(chǎn)生一個(gè)固定長(zhǎng)度的輸出。

Keccak算法的整體結(jié)構(gòu)如圖:

在這兩個(gè)階段要是使用同一個(gè)壓縮函數(shù)Keccak-f,下圖展示了算法“吸入”一個(gè)塊x_i并處理,最后擠出輸出的過(guò)程:


3.2 吸入和擠出階段

從圖中我們可以歸納出大致的流程:

  1. 數(shù)據(jù)填充:?對(duì)輸入串x做padding,使其長(zhǎng)度能被r=1088整除,將padding后分割成長(zhǎng)度為r=1088bits的塊,即x=x0||x1||x2||…||xt-1。

  2. 初始化:一個(gè)長(zhǎng)度為b=r+c bit的全零向量。b=1088+512=1600bits

  3. 輸入:塊x_i,將x_i和向量的前r個(gè)異或運(yùn)算,然后輸入到Keccak-f函數(shù)中處理。重復(fù)上一步,直至處理完x中的每個(gè)塊。

  4. 輸出:長(zhǎng)為r的塊作為y_0?,并將向量輸入到Keccak-f函數(shù)中處理,輸出y_1,以此類推。得到的Hash序列即為y=y_0||y_1||y_2||…||y_u。在Keccak-224/256/384/512中,只需要在y_0中取出對(duì)應(yīng)長(zhǎng)度的前綴即可。

針對(duì)圖中的參數(shù),做出如下定義:

  • r:比特率(bit rate),其值為每個(gè)輸入塊的長(zhǎng)度。

  • c:容量(capacity),其長(zhǎng)度為輸出長(zhǎng)度的兩倍。

  • b:向量的長(zhǎng)度,b=r+c。b的值依賴于指數(shù)L,即b=25*(2^L),L=6,b=1600。

  • b = 1600; r = 1088 ; c = 512;

在Keccak-224/256/384/512中,b、r、c及輸出長(zhǎng)度的取值見(jiàn)下表。



3.3?Padding

填充規(guī)則:添加1,000,…,000,1,|M|+2+d(modr)=0

按照官網(wǎng)的描述,padding偽代碼如下:

P = M ||?1?|| 0x00 || … || 0x00

P = P xor (0x00 || … || 0x00 ||?0x80)

Mbytes為輸入串,“||”符號(hào)表示比特串串聯(lián)。**在SHA3的標(biāo)準(zhǔn)中,d為0x06。**由于Keccak中按照字節(jié)序?yàn)樾《?,以上描述相?dāng)于在輸入比特串后接0110*1以將長(zhǎng)度補(bǔ)齊到能被r整除。關(guān)于Keccak中字節(jié)序的問(wèn)題可以參考官網(wǎng)中的Bits and bytes in Keccak。


3.4 壓縮函數(shù)

對(duì)稱加密中的輪函數(shù),對(duì)應(yīng)此處的壓縮函數(shù)。

壓縮函數(shù)以b比特作為輸入,b比特作為輸出。內(nèi)部結(jié)構(gòu)如下:


Keccak-f?包含n_r輪。n_r的取值與我們之前計(jì)算b時(shí)用到的指數(shù)L有關(guān),具體地,n_r=12+2*L。Keccak-224/256/384/512中**,取L=6,因此n_r=24 rounds**。在每一輪中,要以此執(zhí)行五步,即θ(theta)?、ρ(rho)、π(pi)、χ(chi)、ι(iota)?。在處理過(guò)程中,把b=1600個(gè)比特排列成一個(gè)5564的矩陣,其中w=2^L=64比特,如圖:(x,y,z)=(5,5,64)

slice(x,y)平面平移;plane(x,z)平面平移;sheet(y,z)平面平移;

lane z軸平移;row x軸平移;column y軸平移



3.5 Theta (θ)

C[x] = A[x,0] xor A[x,1] xor A[x,2] xor A[x,3] xor A[x,4], for x in 0?…4

D[x] = C[x-1] xor rot(C[x+1],1), for x in 0…4

A[x,y] = A[x,y] xor D[x], for (x,y) in (0…4,0…4)

該步驟的輸入輸出均存在A矩陣中。

rot(num, offset)?表示將w比特的num向z軸正方向循環(huán)移動(dòng)offset位。

等價(jià)表達(dá)為



3.6 Rho (ρ) and Pi (π)

二者結(jié)合,等價(jià)表達(dá)為

該步的輸入為A數(shù)組,輸出為B數(shù)組。rot含義同上一步,其中作為offset的r數(shù)組定義如下:

代碼中定義如下:


3.7 Chi (χ) 唯一的非線性變換

該步驟中,輸入為B矩陣,輸出為A矩陣。等價(jià)于5*5的S盒子非線性變換。
等價(jià)表達(dá)為


3.8 iota (ι)

A[0,0] = A[0,0] xor RC
異或運(yùn)算,就是二進(jìn)制加法運(yùn)算。
等價(jià)表達(dá)為


該步驟輸入和輸出均為A矩陣。RC值與輪數(shù)有關(guān),RC在24輪中的定義如下:

3.9 輸出

通過(guò)海綿結(jié)構(gòu)中的擠出階段,可以獲得任意長(zhǎng)度的輸出。在Keccak-224/256/384/512中,我們只需要獲得y0中的前224/256/384/512個(gè)bit作為輸出即可。

輸出長(zhǎng)度為1088 bits的y0,取前256bit就是哈希值。


4.MiMC

4.1偽代碼

Ci是322個(gè)隨機(jī)數(shù)常量

function (xL : Fp, xR : Fp) {

for i from?0?up to?321?{

類似DES:每次只處理一半的數(shù)據(jù);


4.2 Rust?代碼


二層:大量的賬戶;

唯一原因:二層的任意狀態(tài)改變,只能是正確改變。

想要錯(cuò)誤改變的難度等價(jià)于攻破zk。

側(cè)鏈技術(shù):

zk技術(shù):雙線性映射正確,電路正確,提供了正確的數(shù)據(jù)。


4.3 Rescue

An example for a sponge hash function is proposed in Fig. 1, where the construction is used to compute the hash output h1 || h2 of the 4-block message m1 || m2 || m3 || m4,?where mi and hi are r-bit values.?The initial state I contains all zeros, i.e.,?I = 0^r || 0^c for an r-bit rate and a c-bit capacity

I=r+c

|mi|=|hi|=r

|Msg|+2+k=nr

Extention=Msg10000001



4.4 Poseidon


4.5 隨機(jī)數(shù)生成算法

分布均有性:0?和1?出現(xiàn)概率相等。

獨(dú)立性:不能根據(jù)一個(gè)子序列,計(jì)算出其他子序列。

圖a是真隨機(jī)數(shù)生成器

圖b是偽隨機(jī)數(shù)生成器

圖c是隨機(jī)函數(shù)

對(duì)種子通常要求來(lái)自真隨機(jī)數(shù),然后進(jìn)行偽隨機(jī)數(shù)生成器,生成隨機(jī)流。

可以使用哈希函數(shù)和對(duì)稱加密五種工作模式構(gòu)造偽隨機(jī)數(shù)生成器,生成隨機(jī)流,實(shí)現(xiàn)流密碼,對(duì)加密加密和解密。


5. 哈希函數(shù)的應(yīng)用

5.1 消息認(rèn)證碼

  • 圖a使用對(duì)稱密加密算法Enc加密消息M和哈希值H。發(fā)送方和接收方共享對(duì)稱密鑰K。所以僅接收方能夠解密獲得消息和哈希值。然后校驗(yàn)H==hash(M)。

  • 圖b使用對(duì)稱加密算法Enc對(duì)哈希值H進(jìn)行加密。發(fā)送明文消息和密文C。接收方均可獲得明文消息,并使用解密算法Dec對(duì)密文解密獲得哈希值H’,校驗(yàn)H==H’。

  • 圖c雙方共享秘密值S,計(jì)算H:=hash(M,S),發(fā)送M和H。接收方獲得M后,也能計(jì)算H’:=hash(M,S),然后校驗(yàn)H==H’。

  • 圖d雙方共享S和K。對(duì)圖c的基礎(chǔ)上的數(shù)據(jù)進(jìn)行加密。接收方需要解密獲得M,然后進(jìn)行校驗(yàn)H==H’。


5.2 應(yīng)用到數(shù)字簽名

  • 圖a發(fā)送方輸入私鑰sk和哈希值H,調(diào)用加密算法Enc,輸出密文C。發(fā)送M和密文C。接收方輸入公鑰PK和密文C,輸出明文哈希值H。接收方計(jì)算M的哈希值H,校驗(yàn)H==H’。注釋:私鑰對(duì)數(shù)據(jù)加密,本質(zhì)上就是數(shù)字簽名。

  • 圖b是輸入圖a的數(shù)據(jù)M和密文C,輸出對(duì)稱加密結(jié)果。接收方進(jìn)行對(duì)稱解密后,再執(zhí)行圖a的計(jì)算哈希值和校驗(yàn)過(guò)程。

關(guān)于Hacker Dōjō?

Hacker Dōjō?是由Hacker共建的加密、Web3前沿技術(shù)開(kāi)源知識(shí)社區(qū)。Dōjō?會(huì)以直播/音頻/文字等形式定期組織分享session, 分享主題主要覆蓋L1和L2的共識(shí)算法,架構(gòu),GitHub repo相關(guān)內(nèi)容,包括不限于以下話題:Scroll / Polygon zkEVM、 Eigen的混合證明系統(tǒng)、Starkware、azTec、 Optimism、Zecrey、Aptos、 Move、密碼學(xué)(零知識(shí)證明、公鑰加密、哈希函數(shù)、格密碼) 、 分布式系統(tǒng)、 以太坊協(xié)議棧、 量子計(jì)算和量子信息、衛(wèi)星通信系統(tǒng)和航天器系統(tǒng)設(shè)計(jì)等。

?Bounty詳情及認(rèn)領(lǐng)進(jìn)度詳情:https://innovative-laser af4.notion.site/174922df15884848b6ac8b57cb4f2fae?v=612e13dc6b9d44dd8197f755abb9fe9c

?加入?Dōjō?中文社區(qū)微信聯(lián)系:@HackerDojo0


有關(guān)DoraHacks

DoraHacks 是一個(gè)全球范圍內(nèi)的極客運(yùn)動(dòng),全球黑客馬拉松組織者,也是全球最活躍的多鏈 Web3 開(kāi)發(fā)者平臺(tái)之一。DoraHacks.io平臺(tái)使得世界各地的Hacker和開(kāi)源開(kāi)發(fā)者可以參與黑客馬拉松、Bounty、Grant、Grant DAO,以及公共物品質(zhì)押等加密原生協(xié)議和基礎(chǔ)設(shè)施進(jìn)行協(xié)作并獲得資助。到目前為止,DoraHacks 社區(qū)的 4000 多個(gè)項(xiàng)目已經(jīng)獲得了來(lái)自全球行業(yè)支持者超過(guò) 3000 萬(wàn)美元的資助。大量開(kāi)源社區(qū)、DAO 和 超過(guò)50個(gè)主要區(qū)塊鏈生態(tài)系統(tǒng)正在積極使用 Dora 的基礎(chǔ)設(shè)施(DoraHacks.io)進(jìn)行開(kāi)源融資和社區(qū)治理。

官網(wǎng):https://dorahacks.io/


Hacker Dōjō 密碼學(xué)專題一:2哈希函數(shù)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
济阳县| 藁城市| 大荔县| 满洲里市| 崇州市| 普定县| 桐庐县| 金昌市| 成武县| 宽城| 兴城市| 砀山县| 汝州市| 两当县| 玉环县| 赤壁市| 永康市| 都昌县| 武义县| 延长县| 邵东县| 澄江县| 新疆| 进贤县| 绥芬河市| 浦北县| 惠水县| 建始县| 陕西省| 辽阳市| 获嘉县| 辉县市| 大竹县| 沙田区| 高碑店市| 乐平市| 濮阳县| 南开区| 通江县| 潞城市| 新源县|