非对称密码体制
非對(duì)稱密碼:加密密鑰和解密密鑰不相同,一個(gè)公開(kāi),一個(gè)保密。公開(kāi)的稱為公鑰,保密稱為私鑰
? ? ? ? 在非對(duì)稱密碼體制中,公鑰和私鑰都可以用于加密與解密操作,公鑰加密則需要私鑰解密,私鑰加密則需要公鑰解密。非對(duì)稱密碼體制的主要優(yōu)點(diǎn)是可以適應(yīng)開(kāi)放性的使用環(huán)境,可以方便安全的實(shí)現(xiàn)數(shù)字簽名和驗(yàn)證。除此之外,非對(duì)稱密碼體制還支持?jǐn)?shù)字信封等技術(shù)。
?
DH:第一個(gè)密鑰協(xié)商算法,使雙方可以在安全的條件下交換密鑰,僅用于秘鑰分配不能加密或解密消息。
重點(diǎn):乙方使用甲方公鑰作為參數(shù),否則無(wú)法保證甲乙雙方獲得同一個(gè)秘密密鑰。
RSA:最典型的非對(duì)稱?加密算法,既可用于數(shù)據(jù)加解密也可用于數(shù)字簽名。
ECC:橢圓曲線加密算法,通過(guò)橢圓曲線方程式的性質(zhì)產(chǎn)生密鑰,創(chuàng)建密鑰時(shí)更快更小更有效。
?
X509EncodedKeySpec和PKCS8EncodedKeySpec兩個(gè)類在加密解密環(huán)節(jié)中經(jīng)常會(huì)用到。密鑰很可能會(huì)以二進(jìn)制方式存儲(chǔ)于文件中,由程序來(lái)讀取。這時(shí)候,就需要通過(guò)這兩個(gè)類將文件中的字節(jié)數(shù)組讀出轉(zhuǎn)換為密鑰對(duì)象。
// 取得私鑰PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);Key privateKey = keyFactory.generatePrivate(pkcs8KeySpec);// 取得公鑰// 構(gòu)造X509EncodedKeySpec對(duì)象X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);// KEY_ALGORITHM 指定的加密算法KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);// 取公鑰匙對(duì)象PublicKey pubKey = keyFactory.generatePublic(keySpec);?簡(jiǎn)要總結(jié)一下,使用公鑰加密、私鑰解密,完成了乙方到甲方的一次數(shù)據(jù)傳遞,通過(guò)私鑰加密、公鑰解密,同時(shí)通過(guò)私鑰簽名、公鑰驗(yàn)證簽名,完成了一次甲方到乙方的數(shù)據(jù)傳遞與驗(yàn)證,兩次數(shù)據(jù)傳遞完成一整套的數(shù)據(jù)交互
總結(jié)
- 上一篇: python 输入一个月份判断季节
- 下一篇: 利用计算机控制数控机床,计算机辅助在《数