安全利器之Tink(探索 Java)

2021-09-01 05:49:05 字數 1308 閱讀 8169

github 密碼學是一門複雜的學科,對於開發人員來說應該做到的大概是

加密演算法的特點

加密演算法的使用

在開發中我們可以直接使用tink進行一些加密相關操作

在tink中提供了aead、deterministicdead、hybrid、mac及signature的支援。從包結構看tink的構成

通過官方demo我們可以知道tink的使用方式。

// 執行時必須先使用tink註冊基元,以便讓tink知道所需的實現。

tinkconfig.register();

// 1.載入或生成加密金鑰材料(tink術語表示的keyset)

keysethandle keysethandle = keysethandle.generatenew(aeadkeytemplates.aes128_gcm);

// 2.使用金鑰材料獲取所選的基元的例項

aead aead = aeadfactory.getprimitive(keysethandle);

// 3.使用基元例項來完成加密任務

byte ciphertext = aead.encrypt(plaintext, associateddata);

由於tink**是按照加密的型別分包,所以具體的使用方式也比較容易推敲

***templates,支援的加密演算法模版

***factory, 基元例項獲取工廠

基元例項, 具體的加密等操作

從aeadkeytemplates中可以知道tink支援了7種aead演算法,分別是

通過aeadfactory獲取了aead的例項,在aeadfactory中可以看到具體的加密、解密是的實現方式,我們可以直接通過其中的方法進行加密、解密,使用方式與上面**差不多,只需替換templates

注意事項

僅提供了aes256_siv加密演算法的支援 使用deterministicaeadfactory生成deterministicaead例項,進行加密、解密操作

從hybridkeytemplates可知,tink支援以下hybrid演算法

存在兩個factory,分別用於生成加密基元和解密基元

從mackeytemplates可知,tink支援了以下mac演算法

使用macfactory獲取mac例項

從signaturekeytemplates可知,支援以下簽名演算法

兩個factory,分別用於獲取加簽、驗籤的基元例項

這兩個包中包含了加密演算法的一些實現細節,對密碼學有興趣的話可以看一下這些由google安全專家編寫的**,其中也有一些工具類如bytes、hex、base64

java安全之加密技術

主要有 對稱加密演算法,基礎加密演算法,非對稱加密演算法。只有乙個金鑰key進行加密解密,可以逆向加解密。古代有名的加密演算法,將加密的資料進行一定的以為,屬於對稱加密,金鑰key 2 int 值 這種加密非常簡單,只需要對相應的明文移位就得到了加密後的密文,如 明文為abc,key 2 移2位 那...

java執行緒安全之單例 多執行緒(十一)

概念理解 單例模式,最常見的就是飢餓模式,和懶漢模式,乙個直接例項化物件,乙個在呼叫方法時進行例項化物件。在多執行緒模式中,考慮到效能和執行緒安全問題,我們一般選擇下面兩種比較經典的單例模式,在效能提高的同時,又保證了執行緒安全。案例 在這裡講兩種常用的模式 1 double check locki...

java學習筆記之多執行緒(2)之執行緒安全

1 同步 塊 synchronized obj 鎖的必須是各執行緒共享的物件 2 同步方法 synchronized 方法,對自己加鎖 synchronized this 3 同步鎖 只介紹可重入鎖 final reentrantlock lock new reentrantlock 加鎖 呼叫lo...