① 非對稱加密之ECC橢圓曲線(go語言實踐)
橢圓曲線密碼學(英語:Elliptic curve cryptography,縮寫為 ECC),一種建立公開密鑰加密的演算法,基於橢圓曲線數學。橢圓曲線在密碼學中的使用是在1985年由Neal Koblitz和Victor Miller分別獨立提出的。
ECC的主要優勢是在某些情況下它比其他的方法使用更小的密鑰——比如RSA加密演算法——提供相當的或更高等級的安全。
橢圓曲線密碼學的許多形式有稍微的不同,所有的都依賴於被廣泛承認的解決橢圓曲線離散對數問題的 困難性上。與傳統的基於大質數因子分解困難性的加密方法不同,ECC通過橢圓曲線方程式的性質產生密鑰。
ECC 164位的密鑰產生的一個安全級相當於RSA 1024位密鑰提供的保密強度,而且計算量較小,處理速度 更快,存儲空間和傳輸帶寬佔用較少。目前我國 居民二代身份證 正在使用 256 位的橢圓曲線密碼,虛擬 貨幣 比特幣 也選擇ECC作為加密演算法。
具體演算法詳解參考:
② golang crypt包的AES加密函數的使用
golang AES加密函數的使用
AES: Advanced Encryption Standard
高階加密標准,是用來代替 老的DES的。
AES加密演算法的加密塊必須是16位元組(128bit),所以不足部分需要填充,常用的填充演算法是PKCS7。
AES加密演算法的key可以是16位元組(AES128),或者24位元組(AES192),或者是32位元組(AES256)
ECB:Electronic Codebook Book
CBC:Cipher Block Chaining:這是最常見的塊加密實現
CTR:Counter
CFB:Cipher FeedBack
OFB:Output FeedBack
具體的差異我也沒去弄明白,知道這么個意思,加密演算法稍後差異。
包括AES,CBC,CTR,OFB,CFB,GCM。
這其中GCM不需要加密塊必須16位元組長度,可以是任意長度,其他的都需要16位元組對其,所以不足部分都需要補充。
3.1 AES
3.2 CBC
3.3 CTR
3.4 OFB
3.5 CFB
3.6 GCM
GCM實現演算法不需要pad。