java加密解密

祕鑰 Key,分爲對稱密鑰和非對稱密鑰java

對稱祕鑰  SecretKey,由KeyGenerator生成web

非對 PrivateKey,PublicKey,由KeyPairGenerator生成算法

KeyFactory(SecretKeyFactory)也可生成祕鑰,能夠將祕鑰轉換爲外部表示如字節數組,祕鑰規範(Key Spec)等數組

一個KeySpec對應一個Key加密


KeyFactory  祕鑰,祕鑰規範轉換spa

DSAPrivateKeySpec spec = xx;orm

KeyFactory kf = KeyFactory.getInstance("DSA");對象

PrivateKey pk = kf.generatePrivateKey(spec);ip


PrivateKey key = xx;ci

Class sp = Class.forName("java.security.spec.DSAPrivateKeySpec");

DSAPrivateKeySpec spec = (DSAPrivateKeySpec ) kf.getKeySpec(key, sp);


消息摘要算法

用於標識消息未被改寫,主要有 MD,SHA,MAC三大系列算法

MAC算法相比MD,SHA,多了個密鑰,MD,SHA能夠防止明文被改寫,但不能防止消息摘要也被改寫

MAC解決了這個問題


對稱加密算法

主要算法有AES,DES,DESede

Cipher cipher = Cipher.getInstance("DES")

cipher.init(Cipher.ENCRYT_MODE, key)

cipher.doFinal(data)


非對稱加密算法

主要算法RSA

使用私鑰加密的數據,需使用公鑰解密

使用公鑰加密的數據,需使用私鑰解密

使用KeyPairGenerator產生密鑰對,而後使用Cipher加解密


數字簽名算法

主要算法 RSA, DSA, ECDSA

數字簽名算法要求驗證數據完整性,認證數據來源,並起到抗否定的做用

,其實現由消息摘要算法和非對稱加密算法結合而成

消息摘要用於驗證數據完整性

非對稱加密算法用於驗證數據來源,抗否定

私鑰用於簽名,公鑰用於驗證


簽名

Sinature sinature = Sinature.getInstance("MD5withRSA")

sinature.initSign(privateKey);

sinature.update(data)

byte[]sign = sinature.sign();


驗證

Sinature sinature = Sinature.getInstance("MD5withRSA")

sinature.initVerify(publicKey)

sinature.update(data)   #這裏的data和 簽名的data是同一個對象

boolean status = sinature.verify(sign);


數字證書

數字證書包含了消息摘要算法,加解密算法,數字簽名算法

密鑰庫 KeyStore

證書 X509Certificate

相關文章
相關標籤/搜索