最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Go hash算法的支持

 更新時間:2018年09月11日 10:06:24   作者:benben_2015  
這篇文章主要介紹了詳解Go hash算法的支持,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

散列函數(shù)(散列算法,又稱哈希函數(shù))是一種從任何一種數(shù)據(jù)中創(chuàng)建小的數(shù)字“指紋”的方法。散列函數(shù)把消息或數(shù)據(jù)壓縮成摘要,使得數(shù)據(jù)量變小,將數(shù)據(jù)的格式固定下來。該函數(shù)將數(shù)據(jù)打亂混合,重新創(chuàng)建一個叫做散列值的指紋。

隨機生成

加密密鑰需要盡可能的隨機,以便生成的密鑰很難再現(xiàn)。加密隨機數(shù)生成器必須生成無法通過計算方法推算出(低于p<.05的概率)的輸出。

散列函數(shù)

基本特性:如果兩個散列值是不相同的(根據(jù)同一函數(shù)),那么這兩個散列值的原始輸入也是不相同的。這個特性是散列函數(shù)具有確定性的結(jié)果,具有這種性質(zhì)的散列函數(shù)稱為單向散列函數(shù)。但另一方面,散列函數(shù)的輸入和輸出不是唯一對應(yīng)關(guān)系的,如果兩個散列值相同,兩個輸入值很可能是相同的,但也可能不同,這種情況稱為“散列碰撞”。

主要應(yīng)用場景

  1. 文件校驗
  2. 數(shù)字簽名
  3. 鑒權(quán)協(xié)議

Go語言支持

go crypto標準包包含了一些常用的哈希算法,例如md5、sha1、sha256、sha512等。以sha1算法為例,了解下go如何生成哈希值。

package main

import (
  "crypto/sha1"
  "fmt"
  "io"
  "log"
  "os"
)

func main() {
  data := []byte("this is test, hello world, keep coding")
  fmt.Printf("%x \n", sha1.Sum(data))

  h := sha1.New()
  io.WriteString(h, "this is test, hello world, keep coding")
  fmt.Printf("%x \n", h.Sum(nil))

  fmt.Printf("%x \n", shaFile("./file.txt"))
}

//shaFile利用sha1算法將目標文件生成哈希值
func shaFile(filePath string) []byte {
  f, err := os.Open("file.txt")
  if err != nil {
    log.Fatal(err)
  }
  defer f.Close()

  h := sha1.New()
  if _, err := io.Copy(h, f); err != nil {
    log.Fatal(err)
  }
  return h.Sum(nil)
}

程序運行結(jié)果為:

a1 7b 4a 11 04 95 e1 c4 70 8f a0 33 db 89 d6 f6 13 3d 6a 48
a1 7b 4a 11 04 95 e1 c4 70 8f a0 33 db 89 d6 f6 13 3d 6a 48
ccf59c07592fb103ff88062c924962b6f9839a9b

示例二:

go語言中提供了MD5、SHA-1等幾種哈希函數(shù),下面這個例子是使用MD5和SHA-1值來對內(nèi)容加密:

package main

import (
  "crypto/md5"
  "crypto/sha1"
  "fmt"
)

func main() {
  TestString := "Hi, pandaman!"

  Md5Inst := md5.New()
  Md5Inst.Write([]byte(TestString))
  Result := Md5Inst.Sum([]byte(""))
  fmt.Printf("%x\n\n", Result)

  Sha1Inst := sha1.New()
  Sha1Inst.Write([]byte(TestString))
  Result = Sha1Inst.Sum([]byte(""))
  fmt.Printf("%x\n\n", Result)
}

輸出結(jié)果為:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • golang?channel多協(xié)程通信常用方法底層原理全面解析

    golang?channel多協(xié)程通信常用方法底層原理全面解析

    channel?是?goroutine?與?goroutine?之間通信的重要橋梁,借助?channel,我們能很輕易的寫出一個多協(xié)程通信程序,今天,我們就來看看這個?channel?的常用用法以及底層原理
    2023-09-09
  • Golang 并發(fā)以及通道的使用方式

    Golang 并發(fā)以及通道的使用方式

    這篇文章主要介紹了Golang 并發(fā)以及通道的使用方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • go?gin?正確讀取http?response?body內(nèi)容并多次使用詳解

    go?gin?正確讀取http?response?body內(nèi)容并多次使用詳解

    這篇文章主要為大家介紹了go?gin?正確讀取http?response?body內(nèi)容并多次使用解決思路,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • Go語言高效編程的3個技巧總結(jié)

    Go語言高效編程的3個技巧總結(jié)

    Go語言是一種開源編程語言,可輕松構(gòu)建簡單、可靠且高效的軟件,下面這篇文章主要給大家分享介紹了關(guān)于Go語言高效編程的3個技巧,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-01-01
  • golang中context.WithValue的使用規(guī)范問題小結(jié)

    golang中context.WithValue的使用規(guī)范問題小結(jié)

    本文主要介紹了golang中context.WithValue的使用規(guī)范問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • Golang?中實現(xiàn)?Set的思路詳解

    Golang?中實現(xiàn)?Set的思路詳解

    本文介紹了Go中兩種set的實現(xiàn)原理,并在此基礎(chǔ)介紹了對應(yīng)于它們的兩個包簡單使用,本文介紹的非常詳細,需要的朋友參考下吧
    2024-01-01
  • Golang實現(xiàn)加權(quán)輪詢負載均衡算法

    Golang實現(xiàn)加權(quán)輪詢負載均衡算法

    加權(quán)輪詢負載均衡算法是一種常見的負載均衡策略,本文主要介紹了Golang實現(xiàn)加權(quán)輪詢負載均衡算法,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • Golang使用Zookeeper實現(xiàn)分布式鎖

    Golang使用Zookeeper實現(xiàn)分布式鎖

    分布式鎖是一種在分布式系統(tǒng)中用于控制并發(fā)訪問的機制,ZooKeeper?和?Redis?都是常用的實現(xiàn)分布式鎖的工具,本文就來使用Zookeeper實現(xiàn)分布式鎖,希望對大家有所幫助
    2024-02-02
  • golang讀取各種配置文件(ini、json、yaml)

    golang讀取各種配置文件(ini、json、yaml)

    日常項目中,讀取各種配置文件是避免不了的,本文主要介紹了golang讀取各種配置文件(ini、json、yaml),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Golang中rune和byte的使用與區(qū)別

    Golang中rune和byte的使用與區(qū)別

    rune和byte都是Go語言中表示單個字符的類型,本文就來介紹一下Golang中rune和byte的使用與區(qū)別,具有一定的參考價值,感興趣的可以了解一下
    2025-02-02

最新評論

宜章县| 彭州市| 阿瓦提县| 晋城| 中山市| 随州市| 弋阳县| 三门县| 临泉县| 宣化县| 体育| 武威市| 庆城县| 班玛县| 西藏| 吉木乃县| 呈贡县| 文成县| 南投县| 潼关县| 三门峡市| 微山县| 治多县| 嫩江县| 青铜峡市| 黄石市| 南充市| 黄骅市| 长乐市| 大方县| 吉木萨尔县| 黑山县| 神农架林区| 长春市| 永修县| 嘉禾县| 乐至县| 汉源县| 勐海县| 永德县| 常山县|