色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

哈希算法到底是什么?它又是如何運行的?

算法與數據結構 ? 來源:機器之心 ? 2020-06-28 11:02 ? 次閱讀

哈希算法到底是什么?它又是如何運行的?Greg Walker 用視頻給出了一個可視化的解答,并在 GitHub 上進行了共享,詳細介紹了 SHA-256 函數的工作原理

項目鏈接:https://github.com/in3rsha/sha256-animation Greg Walker 喜歡構建一些教育性網站,簡單易懂地講解一些科普類算法。 他在這個解釋 SHA-256 的視頻中,不僅介紹了哈希計算,還涉及比特幣挖礦、基礎運算、函數、常量等知識。 什么是哈希函數? 哈希就是將不同的輸入映射成獨一無二的、固定長度的值(又稱 "哈希值"),是最常見的軟件運算之一。很多網絡服務會使用哈希函數,產生一個 token,標識用戶的身份和權限。 那它是如何運行的呢?哈希函數可以把給定的數據轉換成固定長度的無規律數值。此處為方便讀者理解,我們借用《我的第一本算法書》里的比喻:將哈希函數想象成攪拌機。

圖源:《我的第一本算法書》 將數據 “abc” 放入攪拌機里,經過哈希函數計算后,會輸出固定長度且無規律的數值,而這個無規律數值就是“哈希值”,絕大多數情況用十六進制來表示。

哈希函數有一系列特征,如上圖所示,輸出的哈希值與輸入數據的大小、長度等沒有任何關系。

若輸入相同,輸出的哈希值也必定相同。

如輸入不同,輸出的哈希值也必然不同,哪怕是只有細微區別。

在輸入數據完全不同的情況下,輸出的哈希值有可能是相同的,這種少數特殊情況稱為“哈希沖突”。

同時,哈希值是不可逆的,也就是說,通過哈希值不可能反向推算出原本的數據。 在本項目中,Greg Walker 也通過視頻介紹了以上幾大特征。

SHA-256 SHA 包括 SHA-0、SHA-1、SHA-2 和 SHA-3 系列,SHA-256 是 SHA-2 系列的函數之一。其摘要長度為 256 bits,即 32 個字節,故稱 SHA-256。SHA-256 常出現于比特幣領域。 那么 SHA-256 到底是什么樣的呢?Greg Walker 提供了動畫展示。

動畫展示 SHA-256,你也能做到

只需對需要進行 hash 處理的數據運行 sha256.rb 腳本即可。

# simpleruby sha256.rb abc # hash binary or hex data by using `0b` or `0x` prefixesruby sha256.rb 0b01100001ruby sha256.rb 0xaabbccdd # speed up or step through the animation (optional)ruby sha256.rb abc normal # defaultruby sha256.rb abc fastruby sha256.rb abc enter 輸入二進制字符串作為參數,從而運行 SHA-256 中的各個函數:

ruby shr.rb 11111111111111110000000000000000 22ruby rotr.rb 11111111111111110000000000000000 22ruby sigma0.rb 11111111111111110000000000000000ruby sigma1.rb 11111111111111110000000000000000ruby usigma0.rb 11111111111111110000000000000000ruby usigma1.rb 11111111111111110000000000000000ruby ch.rb 11111111111111110000000000000000 11110000111100001111000011110000 00000000000000001111111111111111ruby maj.rb 11111111111111110000000000000000 11110000111100001111000011110000 00000000000000001111111111111111 你也可以使用 hash256.rb 來進行 double-SHA256,該腳本默認接受十六進制數據,如交易數據等。

ruby hash256.rb 0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a29ab5f49ffff001d1dac2b7c # genesis block headerSHA-256 的工作原理基礎運算 這里只對 SHA-256 的基礎運算進行簡單介紹。 SHA-256 uses four basic bitwise operations on words. SHA-256 對 words 使用 4 種 bitwise 基礎運算。 右移 (shr.rb)

SHRn(x) = x >> n 將 bits 向右移動多個位置,同時從右側移出的 bits 丟失。 向右旋轉 (rotr.rb)

將 bits 向右移動多個位置,然后將移動后的 bits 放在左側,也稱為「循環右移」。 Exclusive Or (xor.rb)

x ^ y ^ z XOR 的輸入為兩個 bit,如果其中只有一個為 1,則輸出 1。在合并多個 bit 時通過多次 XOR 運算進行,同時獲得多個 bit 的“平衡表示”(balanced representation)。 加法 (add.rb)

(v + w + x + y + z) % 232 這是非常標準的整數加法運算,唯一的不同是,此處采用結果模數為 2^32,從而將結果限制為 32 位數字。 函數 將上述運算組合起來,就可以創建函數。 前四個函數使用希臘符號 Sigma 命名(小寫σ和大寫Σ)。 σ0 (sigma0.rb)

σ0(x) = ROTR7(x) ^ ROTR18(x) ^ SHR3(x) σ1 (sigma1.rb)

σ1(x) = ROTR17(x) ^ ROTR19(x) ^ SHR10(x) Σ0 (usigma0.rb)

Σ0(x) = ROTR2(x) ^ ROTR13(x) ^ ROTR22(x) Σ1 (usigma1.rb)

Σ1(x)=ROTR6(x)^ROTR11(x)^ROTR25(x) 最后兩個函數 “Choice” 和“Majority”可接受三個不同的輸入,如下所示: Choice (ch.rb)

該函數基于 x 位在 y 位和 z 位之間做出選擇。如果 x = 1,則選擇 y 位;如果 x = 0,則選擇 z 位。

Ch(x, y, z) = (x & y) ^ (~x & z) Majority (maj.rb)

該函數返回的是三個 bits 中的多數。

Maj(x, y, z) = (x & y) ^ (x & z) ^ (y & z)壓縮 該教程中還介紹了很多有趣的基礎知識,這里不再贅述。我們重點來看哈希函數的壓縮函數,這也是其核心功能。 對于消息調度中的每個詞,我們都使用 “狀態寄存器” 中的當前值來計算兩個新的臨時詞(設為 T_1 和 T_2)。

Temporary Word 1 (t1.rb)

T1 = Σ1(e) + Ch(e, f, g) + h + Kt + Wt 此臨時詞將消息調度中的下一個單詞與列表中的下一個常量并在一起運行。 Temporary Word 2 (t2.rb)

T2 = Σ0(a) + Maj(a, b, c) 通過將狀態寄存器中第一個值Σ_0 進行旋轉,與前三個寄存器中的 Majority 的值相加來計算這個臨時詞。 壓縮 (compression.rb)

在計算了兩個臨時詞之后,將狀態寄存器中的值移至下一個位置,并更新寄存器: 狀態寄存器中的第一個值變為 T_1 + T_2,同時狀態寄存器中的第五個值已添加了 T_1。 這即是一輪壓縮,對于信息調度中的每個詞該過程都會重復一次。 在壓縮了整個消息調度之后,我們將得到的哈希值添加到初始哈希值中,由此得出消息塊的最終哈希值。 但如果還有其他消息塊要處理,則將當前哈希值在下一次壓縮中用作初始哈希值。如下圖所示:

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4607

    瀏覽量

    92838
  • 哈希函數
    +關注

    關注

    0

    文章

    43

    瀏覽量

    9446

原文標題:對SHA-256感到好奇?這個項目教你如何可視化哈希函數的工作原理

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    TLV320AIC3254內部中的ADC處理模塊和minidsp到底是什么關系?

    我想請問一下幾個問題: 1.3254內部中的ADC處理模塊和minidsp到底是什么關系,是并列的還是串行關系?還是ADC處理模塊就是minidsp特殊情況下的部分? 2.minidsp的抽取因子該怎么理解,到底怎么使用?
    發表于 10-31 06:02

    請問PCM2903C的溫度范圍到底是多少呢?

    如下圖,PCM2903C的溫度范圍到底是多少呢? 如果用在-25~85℃,是否會出問題?
    發表于 10-14 07:14

    放大器的共模輸入電壓到底是指什么?

    請問放大器的共模輸入電壓到底是指什么?
    發表于 09-19 07:17

    功放和運放到底是什么區別?

    想請問一下功放和運放到底是什么區別,感覺只要接一個小負載,運放的輸出電流也可以很大啊?到底有什么區別啊
    發表于 09-10 07:00

    請問LMV772到底是雙電源還是單電源啊?

    請問LMV772到底是雙電源還是單電源啊?手冊前面寫的太模糊了。求指教
    發表于 09-09 07:10

    運放的輸入電容到底是什么?

    我想請問一下運放的輸入電容到底是什么?
    發表于 09-04 06:52

    LMH6502的輸入電壓到底是多少?

    LMH6502的輸入電壓到底是多少,我稍微給如大一點點的信號,放大不行還能接受,我衰減都失真,
    發表于 08-27 07:02

    運放旁路電容必須靠近芯片引腳的原因到底是什么呢?

    運放旁路電容必須靠近芯片引腳的原因到底是什么呢?有的說是怕走線的電感與旁路電容形成諧振,旁路電容靠近運放的時候走線的電感不應該更大了嗎(走線越長,走線的寄生電感也就越大)
    發表于 08-01 06:56

    對于STM8的固件庫,到底是怎么對文件進行配置的?

    對于STM8的固件庫,到底是怎么對文件進行配置的?
    發表于 05-17 15:59

    請問STM8L052R8的EEPROM到底是幾個block?

    哪位知道STM8L052R8的EEPROM到底是幾個block,手冊上寫的不清不楚,按FLASH說的話,052應該是高密度的,但是EEPROM只有256B,所以很亂,具體也不知道分為幾塊
    發表于 05-11 08:29

    什么是元宇宙,AR/VR和它又是什么關系呢?

    最近蘋果公司的Vision pro上市預售掀起了一波潮流,元宇宙的概念又火了。那么什么是元宇宙,AR/VR和它又是什么關系呢?
    的頭像 發表于 04-22 15:14 ?1636次閱讀

    共享單車到底是什么通信原理

    我們經常騎的共享單車到底是什么通信原理,有人了解過嗎? 一、智能車鎖 共享單車最核心的硬件是智能車鎖,主要用于實現控制和定位功能。
    發表于 04-09 10:33 ?842次閱讀
    共享單車<b class='flag-5'>到底是</b>什么通信原理

    共享單車到底是什么通信原理?

    我們經常騎的共享單車到底是什么通信原理,有人了解過嗎?下面寶藍小編就帶大家了解下。
    的頭像 發表于 02-25 10:32 ?1407次閱讀
    共享單車<b class='flag-5'>到底是</b>什么通信原理?

    請問M487KMCAN的SRAM到底是128KB還是160K?

    M487KMCAN的SRAM到底是128 KB 還是160K
    發表于 01-16 07:18

    直流電機的輸出功率與運行速度之間的關系到底是怎樣的?

    想請教各位高手兩個問題: 1、直流電機的輸出功率與運行速度之間的關系到底是怎樣的, 最好能寫出公式 2、我這里的直流電機是通過6RA70調速的, 是否能通過降低電機的運行速度來控制電機的輸出功率,從而節約生產用電呢??
    發表于 12-26 06:55
    主站蜘蛛池模板: 亚洲国产剧情中文视频在线| 欧美成人亚洲高清在线观看 | 做暖暖视频在线看片免费| 中文文字幕文字幕亚洲色| 96精品视频| 动漫成人片| 久久9精品区-无套内射无码 | 花蝴蝶在线观看免费8 | 久久青青草视频在线观| 欧美丰满少妇久久无码精品| 日韩视频中文字幕精品偷拍| 小777论坛| 最近免费中文字幕MV在线视频3| 9久久免费国产精品特黄| 国产激情精品久久久久久碰| 黄桃AV无码免费一区二区三区| 久久婷婷国产五月综合色啪最新| 蜜柚视频高清在线| 99国产在线视频有精品视频| 久久精品热老司机| 古装性艳史电影在线看| 国产成人精品自线拍| 国产乱对白精彩在线播放| 国产免费人成在线视频视频| 韩国电影久久| 久久一er精这里有精品| 男女AA片免费| 日本双渗透| 校花被扒衣吸乳羞羞漫画| 亚洲免费在线观看| 综合精品欧美日韩国产在线| caoporn超碰| 高清一区二区亚洲欧美日韩| 国产情侣真实露脸在线| 新新电影理论中文字幕| 91久久偷偷看嫩草影院无费| 国产乱码精品一区二区三区四川| 蜜桃久久久亚洲精品成人| 西施打开双腿下面好紧| 99热成人精品国产免男男| 国产亚洲精品久久精品6|