Go hash演算法的支援

2021-08-19 13:47:01 字數 1032 閱讀 6239

雜湊函式(雜湊演算法,又稱雜湊函式)是一種從任何一種資料中建立小的數字「指紋」的方法。雜湊函式把訊息或資料壓縮成摘要,使得資料量變小,將資料的格式固定下來。該函式將資料打亂混合,重新建立乙個叫做雜湊值的指紋。

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

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

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

package main

import (

"crypto/sha1"

"fmt"

"io"

"log"

"os"

)func main()

//shafile利用sha1演算法將目標檔案生成雜湊值

func shafile(filepath string) byte

defer f.close()

h := sha1.new()

if _, err := io.copy(h, f); err != nil

return h.sum(nil)

}

程式執行結果為:

a1 7b 4a11

0495 e1 c4 70

8f a0 33 db 89 d6 f6 13

3d 6a48

a1 7b 4a11

0495 e1 c4 70

8f a0 33 db 89 d6 f6 13

3d 6a48

ccf59c07592fb103ff88062c924962b6f9839a9b

Nginx的upstream 支援演算法

nginx的upstream目前支援5種方式的分配 1 輪詢 預設 每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。2 weight 指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況。例如 upstream bakend 3 ip hash...

支援向量機演算法

支援向量機 支援向量機是一種二類分類模型。其基本模型為定義在特徵空間上的間隔最大的線性分類器,間隔最大是它有別有感知機。支援向量機還包括核技巧,使它成為實質上的非線性分類器。支援向量機的學習策略就是間隔最大化,形式的化為求解凸二次規劃問題,也等價於正則化的和業務損失函式的最小化問題。支援向量機學習演...

支援向量機(SVM)演算法

支援向量機 support vector machine 是一種分類演算法,通過尋求結構化風險最小來提高學習機泛化能力,實現經驗風險和置信範圍的最小化,從而達到在統計樣本量較少的情況下,亦能獲得良好統計規律的目的。通俗來講,它是一種二類分類模型,其基本模型定義為特徵空間上的間隔最大的線性分類器,即支...