golang三類加密演算法

2021-10-08 23:12:17 字數 2732 閱讀 7136

整理一下加密演算法,以前跟這b站學的

各個加密的原理我不想知道,感覺能用就行

名稱速度/安全性

crc32

速度快,安全性低 2^32

adler

速度快,安全性低 2^32

crc64

速度稍微快,安全性低 2^64

md5速度一般,安全性一般 2^128

sha1

速度一般,安全性一般 2^128

sha256

速度慢安全性高 2^256

sha512

速度慢,安全性極高 2^512

hash函式應用:

參考 博主荒野之平

訊息認證是用來驗證訊息完整性的一種機制或服務,訊息認證確認收到的資料確實和傳送時的一樣(即防篡改),並且還要確保傳送方的身份是真實有效的的(即防冒充)。

也就是說雜湊函式只是確定資訊來自生產者,只有驗證功能,不可用於資訊傳輸,因為沒有解密演算法。

**中演算法的golang實現

import 包 :

import

("hash/crc32"

"hash/crc64"

"hash/adler32"

"crypto/sha512"

"crypto/sha256"

"crypto/sha1"

"crypto/md5"

"encoding/hex"

)

type allhash struct

繫結方法根據雜湊名字將資料雜湊化,這些函式被go標準庫給敷衍了,解釋在十個字以內,要不就沒有,我giao

對於md5,sha1,sha256,sha512步驟一樣,

我猜:(以md5為例)

1.new乙個的物件,相當於申請了一塊buf:myhash:=md5.new()

2.向這個buf中寫入位元組型別的資料:myhash.write(byte(laststr))

3.進行相應的雜湊運算:bs:=myhash.sum(nil),我用反射檢視bs的型別是uint8.

4.最終資料以16進製制輸出 :laststr=hex.encodetostring(bs)或者fmt.sprintf("%x", bs)

func

(allhash *allhash)

getbyteshash

(data[

]byte

)string

laststr=hex.

encodetostring

(state)

}}

這位大佬說的很有道理,部落格裡總結的好

參考:hmxz1024

對稱加密,訊息傳送端要先有乙個金鑰,然後執行加密演算法,獲得加密資料;接受端要事先獲得傳送者的金鑰,用金鑰進行解密。

對稱加密適合對大量資料進行加密,由於傳輸金鑰並不安全,真正使用時,對資料進行對稱加密,對金鑰進行非對稱加密。

des加密步驟:

1.確定金鑰位數,不夠的補零,超了截。這裡假設金鑰是24位

2.呼叫第三方庫goencrypt的tripledesencrypt,利用金鑰進行加密

3.返回加密資料。

func

encrypt

(datastr [

]byte

,password [

]byte)[

]byte

}else

if length>

24 crypttext, err := goencrypt.

tripledesencrypt

(datastr, password)

if err !=

nil}

return crypttext

}

des解密步驟:

1.確定金鑰位數,不夠的補零,超了截。這裡假設金鑰是24位

2.呼叫第三方庫goencrypt的tripledesdecrypt,利用金鑰進行解密

3.返回解密資料

func

decrypt

(datastr [

]byte

,password [

]byte)[

]byte

}else

if length>

24newplaintext, err:= goencrypt.

tripledesdecrypt

(datastr, password)

if err !=

nil}

return newplaintext

}

私鑰加密,公鑰解密;公鑰加密,私鑰解密,稱之為非對稱加密。

雙方進行資訊傳遞,雙方都需要建立公鑰和私鑰,如果己方用私鑰加密,就要把公鑰傳給對方,對方用公鑰解密。

下面是eccgolang實現:

func

(e *ecc )

encrypt

(datastr [

]byte)[

]byte

}return crypttext

}func

(e *ecc )

decrypt

(datastr [

]byte)[

]byte

}return msg

}

Golang 實現維吉尼亞加密演算法

維吉尼亞加密演算法 維吉尼亞加密演算法 virginia encryption algorithm 是凱撒加密演算法的變種 假設 a 0,b 1 z 25,在凱撒加密演算法中金鑰只有一位,若金鑰是 d 對應3,則所有字元都向後移動3位 維吉尼亞演算法的金鑰不只一位,一般是乙個大寫的單詞,如以gola...

對稱加密演算法 DES加密演算法

一 對稱加密演算法 對稱加密也稱為常規加密 私鑰或單鑰加密。乙個對稱加密由5部分組成 明文 plaintext 這是原始資訊或資料,作為演算法的輸入。加密演算法 encryption algorithm 加密演算法對明文進行各種替換和轉換。金鑰 secret key 金鑰也是演算法的輸入。演算法進行...

gentry同態加密演算法 同態加密演算法

本文對同態加密演算法進行學習。參考文章同態加密演算法。定義同態加密演算法保證對聯合密文的解密結果等價於聯合明文。若存在同態加密演算法f,針對明文a和b,加密後分別得到a f a b f b 將其和a b 解密後得到a b,則同態加密演算法f被成為加法同態加密演算法。加法同態演算法的加密和解密分別用e...