整理一下加密演算法,以前跟這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...