婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 詳解Go hash算法的支持

詳解Go hash算法的支持

熱門標簽:鄭州亮點科技用的什么外呼系統 汕頭小型外呼系統 浙江高頻外呼系統多少錢一個月 釘釘有地圖標注功能嗎 黃岡人工智能電銷機器人哪個好 建造者2地圖標注 阿里云ai電話機器人 惠州電銷防封電話卡 濱州自動電銷機器人排名

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

隨機生成

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

散列函數

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

主要應用場景

  1. 文件校驗
  2. 數字簽名
  3. 鑒權協議

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)
}

程序運行結果為:

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等幾種哈希函數,下面這個例子是使用MD5和SHA-1值來對內容加密:

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)
}

輸出結果為:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Go語言中三種不同md5計算方式的性能比較
  • Go語言對字符串進行MD5加密的方法
  • Go語言MD5加密用法實例
  • Golang的md5 hash計算操作

標簽:晉中 駐馬店 泰安 東營 滄州 阿壩 瀘州 昭通

巨人網絡通訊聲明:本文標題《詳解Go hash算法的支持》,本文關鍵詞  詳解,hash,算法,的,支持,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解Go hash算法的支持》相關的同類信息!
  • 本頁收集關于詳解Go hash算法的支持的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 女性| 南川市| 大宁县| 方山县| 绵阳市| 太和县| 集贤县| 安乡县| 贵溪市| 彭州市| 胶州市| 会理县| 汝州市| 太仆寺旗| 双城市| 昌图县| 巩留县| 七台河市| 龙江县| 松阳县| 石阡县| 聂荣县| 大厂| 松潘县| 无极县| 白河县| 高碑店市| 贵德县| 梧州市| 绥中县| 龙游县| 封开县| 石门县| 乌鲁木齐县| 克什克腾旗| 陆河县| 周至县| 肥乡县| 喀什市| 修文县| 萨迦县|