區(qū)塊鏈 區(qū)塊鏈的密碼技術(shù)有數(shù)字簽名算法和什么算法?
區(qū)塊鏈的密碼技術(shù)有數(shù)字簽名算法和什么算法?區(qū)塊鏈密碼技術(shù)包括數(shù)字簽名算法和哈希算法。哈希算法是一種常見的單向加密算法。它對(duì)數(shù)據(jù)字符串進(jìn)行加密以生成固定長度的二進(jìn)制字符串。此二進(jìn)制字符串是哈希值,但無法
區(qū)塊鏈的密碼技術(shù)有數(shù)字簽名算法和什么算法?
區(qū)塊鏈密碼技術(shù)包括數(shù)字簽名算法和哈希算法。
哈希算法是一種常見的單向加密算法。它對(duì)數(shù)據(jù)字符串進(jìn)行加密以生成固定長度的二進(jìn)制字符串。此二進(jìn)制字符串是哈希值,但無法從哈希值還原為原始輸入數(shù)據(jù)。哈希函數(shù)在密碼學(xué)中有三個(gè)重要的性質(zhì):抗沖突性、不可逆性和問題友好性。
哈希值是什么,又有什么的應(yīng)用?
哈希代碼是從任何對(duì)象生成的數(shù)字。這是允許在哈希表中快速存儲(chǔ)/檢索對(duì)象的方法。
想象一下下面的例子:
在你面前的桌子上,有九個(gè)盒子,每個(gè)盒子上都標(biāo)有1到9的數(shù)字。這些盒子里也有很多不同的東西,但是一旦它們到了,你就需要盡快找到它們。
您需要的是一種方法,可以立即決定將每個(gè)對(duì)象放入哪個(gè)框中。你決定找到卷心菜,找出它在哪個(gè)盒子里,然后直接去那個(gè)盒子。
現(xiàn)在假設(shè)您不想索引,您希望能夠立即找到對(duì)象所在的框。
在本例中,我們使用一個(gè)非常簡單的方法來完成此任務(wù)—對(duì)象名稱中的字母數(shù)。所以卷心菜去7號(hào)包廂,豌豆去3號(hào)包廂,火箭去6號(hào)包廂,班卓琴去5號(hào)包廂,依此類推。犀牛呢?它有10個(gè)字符,所以讓我們稍微改變一下我們的算法,然后“換行”,這樣10個(gè)字母對(duì)象被放置在框1中,11個(gè)字母被放置在框2中,依此類推。這應(yīng)該包括任何物體。
有時(shí)盒子里有不止一個(gè)物體,但如果你要找火箭,它比花生和火箭快得多,而不是檢查一整棵卷心菜、豌豆、班卓琴和犀牛。
這是一個(gè)哈希代碼。從一個(gè)對(duì)象中獲取一個(gè)數(shù)字的一種方法,它可以存儲(chǔ)在一個(gè)哈希表中。在Java中,哈希代碼可以是任意整數(shù),每個(gè)對(duì)象類型負(fù)責(zé)生成自己的哈希代碼。有關(guān)詳細(xì)信息,請參見object的“hashcode”方法。
Java對(duì)象的哈希代碼只是一個(gè)數(shù)字。它是一個(gè)32位有符號(hào)整數(shù),允許對(duì)象由基于哈希的數(shù)據(jù)結(jié)構(gòu)管理。我們知道散列碼是JVM分配給對(duì)象的唯一ID號(hào)。但實(shí)際上,哈希碼并不是對(duì)象的唯一數(shù)字。如果兩個(gè)對(duì)象相等,它們應(yīng)該返回相同的哈希代碼。因此,我們必須以這種方式實(shí)現(xiàn)類的hashcode()方法。如果兩個(gè)對(duì)象相等,也就是說,它們由類的equals()方法進(jìn)行比較,那么這兩個(gè)對(duì)象必須返回相同的哈希代碼。
哈希值到底什么意思?
您可以簡單地將哈希值解釋為一段數(shù)據(jù)(一個(gè)文件或字符串)、DNA或ID卡
通過某種哈希算法(典型的MD5、SHA-1等),將一段長的數(shù)據(jù)映射為一段短的數(shù)據(jù),這就是大數(shù)據(jù)的哈希值。他有這樣一個(gè)特點(diǎn),他是唯一的一個(gè)。一旦大數(shù)據(jù)發(fā)生變化,哪怕是很小的變化,他的哈希值也會(huì)發(fā)生變化。另一方面,由于它是DNA,它確保沒有兩個(gè)數(shù)據(jù)散列是完全相同的。
由于此功能,它通常用于確定兩個(gè)文件是否相同。例如,要從網(wǎng)絡(luò)下載文件,只需將文件的原始哈希值與下載文件的哈希值進(jìn)行比較。如果哈希值相同,則表示這兩個(gè)文件完全相同,并且文件在下載過程中沒有損壞。如果不是,則表示下載的文件與原始文件不同,并且在下載過程中文件被損壞。