了解比特幣中所用的Hash算法-SHA-256

???? 本文主要是讓我們了解比特幣中所用到的Hash(SHA-256)算法.我們從什么是Hash卜壕,常見的哈希算法有那些,當(dāng)前主流使用的哈希算法是什么,哈希算法的性能及安全和建議糊昙,最后我們看C#怎么實(shí)現(xiàn)SHA-256算法。

Hash定義及是什么:

???? Hash(哈闲磺或散列)算法是非呈臀基礎(chǔ)也非常重要的計(jì)算機(jī)算法,它能將任意長度的二進(jìn)制明文映射為較短的(通常是固定長度的)二進(jìn)制Hash值回挽,并且不同的明文很難映射為相同的Hash值没咙。

???? 例如:SHA-256(123456)=8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

SHA-256(我們今天來看看比特幣使用的Hash(SHA-256)算法)=4208d006395df44386329cd5720040f5bff4f34b57b78e39f879f4ca94c3ad94

????? 以上兩個(gè)例子,第一個(gè)(123456)例子和第二個(gè)(我們今天來看看比特幣使用的Hash(SHA-256)算法)例子厅各,通過哈希(SHA-256)算法把不同長度的明文字符映射為固定長度字符镜撩。也就是說只要是SHA-256計(jì)算后的結(jié)果為:8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92,則說明該內(nèi)容極大概率上就是(123456).

常見的Hash算法及主流使用算法是:

???? 目前常見的Hash算法包括MD5和SHA(SHA-1队塘、SHA-2袁梗、SHA-3).
???? MD4(RFC 1320)是MIT的Ronald L.Rivest在1990年設(shè)計(jì)的,MD是Message Digest的縮寫憔古。其輸出為128位遮怜。MD4已被證明不夠安全。

???? MD5(RFC 1321)是Rivest于1991年對(duì)MD4的改進(jìn)版本鸿市。它對(duì)輸入仍以512位進(jìn)行分組锯梁,其輸出是128位即碗。MD5比MD4更加安全,但是過程更加復(fù)雜陌凳,計(jì)算速度也慢一些剥懒。MD5已被證明不具備”強(qiáng)抗碰撞性”。

???? SHA(Secure Hash Algorithm)并非一個(gè)算法合敦,而是一個(gè)Hash函數(shù)族初橘。NIST(NationalInstitute of Standards andTechnology)于1993年發(fā)布其首個(gè)實(shí)現(xiàn)。知名的SHA-1算法1995年面世充岛,它輸出長度160位的Hash值蹄咖,抗窮舉性更好赊琳。SHA-1設(shè)計(jì)模仿了MD4算法歧杏,采用類似原理逻澳。SHA-1已被證實(shí)不具備“強(qiáng)扛碰撞性”。

????? 為了提高安全性蒜魄,NIST還設(shè)計(jì)出了SHA-224扔亥、SHA-256、SHA-384和SHA-512算法(SHA-2),跟SHA-1算法原理類似权悟。SHA-3相關(guān)算法也已經(jīng)被提出砸王。

???? 現(xiàn)在還是有很多系統(tǒng)采用的MD5和SHA-1算法,但是這些算法已經(jīng)不安全了峦阁,一般現(xiàn)在推薦至少使用SHA-256或更安全的算法谦铃。

性能及安全和建議:

?????? Hash算法一般都是計(jì)算敏感型的。也意味著計(jì)算資源是瓶頸榔昔,主頻越高的CPU運(yùn)行Hash算法速度越快驹闰。因此可以通過硬件加速來提升Hash計(jì)算的吞吐量。也有一些Hash算法不是計(jì)算敏感型的撒会。例如scrypt算法嘹朗,計(jì)算過程需要大量內(nèi)存資源,節(jié)點(diǎn)不同通過簡單地添加更多CPU來獲得Hash性能提升诵肛。這樣的Hash算法經(jīng)常用來避免算力攻擊的常景屹培。

????? Hash算法不是一種加密算法,不能用于對(duì)信息的保護(hù)怔檩,但是Hash算法暢用于對(duì)口令的保存上褪秀。例如用戶登錄網(wǎng)站需要通過用戶名口令來驗(yàn)證。如果網(wǎng)站后臺(tái)數(shù)據(jù)庫直接保存用戶口令的明文薛训,一旦數(shù)據(jù)庫發(fā)生泄漏后果不堪設(shè)想媒吗。

????? 利用Hash的特性,后臺(tái)可以僅保存密碼的Hash值乙埃,這樣只要比對(duì)Hash值一致闸英,則說明輸入的口令正確锯岖,及時(shí)數(shù)據(jù)庫泄露了,也無法從Hash值還原口令甫何,只能進(jìn)行窮舉測試出吹。

????? 由于用戶設(shè)置的口令的強(qiáng)度不夠,只是簡單字符串辙喂,例如上面我們說的password趋箩、123456、654321或者生日等加派。有人通過這些口令,計(jì)算對(duì)應(yīng)的Hash值跳芳,制作對(duì)應(yīng)的哈希值庫芍锦。這樣通過Hash值可以快速反查原始口令。

????? 為了防范這一類攻擊飞盆,我們建議不要用簡單的口令及個(gè)人生日作為口令娄琉,現(xiàn)今個(gè)人身份信息很容易得到,以上是個(gè)人建議吓歇。

????? 如果是網(wǎng)站或者說是系統(tǒng)孽水,可以采用在口令基礎(chǔ)上添加隨機(jī)數(shù)后進(jìn)行Hash且隨機(jī)數(shù)存放在不同的地方,這樣只要不是兩者同事泄露城看,攻擊者就很難破解女气。

最后我們用C#方式展示SHA-256算法:

首先我們需要引用類:
usingSystem.Security.Cryptography

聲明字節(jié)數(shù)組來接收需要序列化的字符串:
byte[] bytValue =System.Text.Encoding.UTF8.GetBytes(“123456”);

然后調(diào)用Hash(SHA-256),傳入字節(jié)數(shù)組:
SHA256 sha256 = newSHA256CryptoServiceProvider();

聲明字節(jié)數(shù)組接收已經(jīng)哈希的值:
byte[] retVal =sha256.ComputeHash(bytValue);

以上是我們談的內(nèi)容测柠,如果需要深入了解炼鞠,哪我們感覺行動(dòng)吧!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末轰胁,一起剝皮案震驚了整個(gè)濱河市谒主,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赃阀,老刑警劉巖霎肯,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異榛斯,居然都是意外死亡观游,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門肖抱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來备典,“玉大人,你說我怎么就攤上這事意述√嵊叮” “怎么了吮蛹?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長拌屏。 經(jīng)常有香客問我潮针,道長,這世上最難降的妖魔是什么倚喂? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任每篷,我火速辦了婚禮,結(jié)果婚禮上端圈,老公的妹妹穿的比我還像新娘焦读。我一直安慰自己,他們只是感情好舱权,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布矗晃。 她就那樣靜靜地躺著,像睡著了一般宴倍。 火紅的嫁衣襯著肌膚如雪张症。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天鸵贬,我揣著相機(jī)與錄音俗他,去河邊找鬼。 笑死阔逼,一個(gè)胖子當(dāng)著我的面吹牛兆衅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播嗜浮,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼涯保,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了周伦?” 一聲冷哼從身側(cè)響起夕春,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎专挪,沒想到半個(gè)月后及志,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡寨腔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年速侈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片迫卢。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡倚搬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出乾蛤,到底是詐尸還是另有隱情每界,我是刑警寧澤捅僵,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站眨层,受9級(jí)特大地震影響庙楚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜趴樱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一馒闷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧叁征,春花似錦纳账、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至帅涂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間尤蛮,已是汗流浹背媳友。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留产捞,地道東北人醇锚。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像坯临,于是被迫代替她去往敵國和親焊唬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自:https://halfrost.com/go_map_chapter_one/ https://half...
    HuJay閱讀 6,143評(píng)論 1 5
  • 散列表,它是基于快速存取的角度設(shè)計(jì)的看靠,也是一種典型的“空間換時(shí)間”的做法赶促。顧名思義,該數(shù)據(jù)結(jié)構(gòu)可以理解為一個(gè)線性表...
    yeying12321閱讀 3,691評(píng)論 0 6
  • 休息
    ttttttttttt55閱讀 448評(píng)論 0 0
  • ElasticSearch是一款非常優(yōu)秀的分布式搜索程序挟炬,提供RESTful API鸥滨,底層基于Lucene,采用多...
    JunChow520閱讀 476評(píng)論 0 1
  • 姐姐現(xiàn)在每天早上帶著弟弟一起谤祖,表演: 我怎么…這么…好看… 真是太魔性了婿滓! 這幾天實(shí)在是忙,無暇顧及姐姐粥喜,對(duì)她的要...
    婕寧捷媽媽閱讀 432評(píng)論 0 0