針對加密方式劃分為 對稱加密和非對稱加密
對稱加密:使用唯一秘鑰對資料進行加解密,其主要特點為速度快、使用方便、適合對大資料量進行加解密操作;主要缺點也比較明顯,需要事先約定秘鑰,當雙方通訊時就涉及到該秘鑰的交換,存在被截獲風險。
aes演算法:將資料劃分為區塊,每個區塊128位,計算過程將其固定在4*4矩陣內,矩陣中的每乙個元素為1byte,加密金鑰可以為 128,192,256位,之後具體運算過程涉及 xor 運算、查詢表非線性替換函式替換位元組、對行列做位移處理等,生成加密資料
golang 操作實現:
func aesdecode(private [32]byte, data *byte) error {
var key byte
key = make(byte, 32)
copy(key[:], private[:32])
block, err := aes.newcipher(key)
if err != nil {
return fmt.errorf("aesencode error: %v", err)
stream := cipher.newcfbdecrypter(block, private[:block.blocksize()])
stream.xorkeystream(*data, *data)
return nil
func aesencode(private [32]byte, data *byte) error {
var key byte
key = make(byte, 32)
copy(key[:], private[:32])
block, err := aes.newcipher(key)
if err != nil {
return fmt.errorf("aesencode error: %v", err)
stream := cipher.newcfbencrypter(block, private[:block.blocksize()])
stream.xorkeystream(*data, *data)
return nil
非對稱加密: 主要特點擁有一組金鑰對,公鑰+私鑰,私鑰個人擁有,公鑰可公開廣播,資料使用公鑰和公開演算法對資料進行加密後,私鑰可通過公開演算法解密資料。
代表演算法:rsa 、ecc
rsa 實行的是大數分解問題
ecc 橢圓曲線演算法
演算法的目的為增加逆向推導的難度,ecc橢圓曲線演算法主要將計算域遷移到了橢圓上,涉及到的數學知識為 橢圓求和,幾何定義在象限中的表現為 兩點的和等於兩點的連線與曲線的交點對x軸對稱的映象點
非對稱秘鑰演算法可用於 數字簽名和非對稱加密
ed25519 簽名演算法
curv25519 可實現非對稱加密,但非對稱加密通常不用來做為資料加密演算法,而是用來提供對稱秘鑰的秘鑰交換安全演算法,其使用方法可以為
1、明文——aes演算法加密———>密文
2、秘鑰使用非對稱加密演算法交換
aes秘鑰選取 curv25519(a秘鑰,b公鑰)=aes秘鑰=curv25519(b秘鑰,a公鑰)
golang實現:
"golang.org/x/crypto/curve25519"
scalarmult(dst, in, base *[32]byte)
對稱加密與非對稱加密
概述目前存在兩種加密方法 一種是對稱加密 另稱私鑰加密 一種是不對稱加密 另稱公鑰加密 對稱加密 對稱加密是一種最古老也最有名的加密技術。它對加密的內容應用乙個私鑰 可以是乙個數字,乙個單詞,或者是一隨機字串 按照一定的規則進行改變,從而達到加密的目的。一種簡單的情形是把每個字母在字母表中往前或往後...
對稱加密與非對稱加密
什麼是加密?加密分為演算法和秘鑰兩部分。演算法是不變的,秘鑰是變化的,看下面的例子。秘鑰 abcedfgh 12345678。演算法 明文中每一位都換成秘鑰表中的另乙個位。例如adfh經過加密後為1568。加密金鑰k和解密金鑰k 是一樣的則為對稱加密。對稱加密的優點 加密速度快。對稱加密的缺點 金鑰...
對稱加密與非對稱加密
對稱加密是最快速 最簡單的一種加密方式,加密 encryption 與解密 decryption 用的是同樣的金鑰 secret key 對稱加密有很多種演算法,由於它效率很高,所以被廣泛使用在很多加密協議的核心當中。對稱加密通常使用的是相對較小的金鑰,一般小於256 bit。因為金鑰越大,加密越強...