一、加密算法算法
爲了網絡通信中的報文安全,通常須要對報文進行加密,目前經常使用的加密算法有:安全
非對稱加密算法:又稱公鑰加密算法,如RSA、DSA/DSS,最經常使用的就是RSA算法(算法公開,可自行百度瞭解算法細節),算法產生一個公鑰一個私鑰,用公鑰加密的報 文只能用私鑰解密,用私鑰加密的報文只能用公鑰解密;網絡
對稱加密算法:3DES、AES、RC4,加密密鑰與解密密鑰相同,通常用於只有通信雙方知道密鑰的通信方式;工具
HASH算法:MD五、SHA一、SHA256,由哈希算法計劃獲得哈希值,加密過程不可逆,由哈希值不能獲得原明文,通常用於做摘要簽名;網站
二、數字證書加密
數字證書是由CA(Certificate Authority)機構,發行的用於網絡通信中驗證身份的一種方式; 關於數字證書在此不作綴述,有興趣的小夥伴能夠自行網上查找;blog
數字證書中通常包含了此證書擁有者、證書使用者、證書名稱、證書公鑰等信息。get
三、證書生成it
用JDK提供的證書管理工具keytool能夠製做證書,命令以下:test
keytool -genkey -keyalg RSA -keysize 2048 -validity 36500 -alias SEC_TEST -keypass 123456 -keystore test.keystore -storepass 123456 -dname "CN=localhost,OU=DEP,O=CN,L=BJ,ST=BJ,C=CN"
其中,-keyalg 指定算法,
-keysize指定密鑰大小,
-validity指定有效期,單位爲天,
-alias 別名
-keypass 指定私鑰使用密碼,
-keystore指定密鑰庫名稱,
-storepass 證書庫的使用密碼,從裏面提取公鑰時須要密碼
-dname :CN擁有者名字,通常爲網站名或IP+端口,如www.baidu.com,OU組織機構名 O組織名 L城市 ST州或省 C國家代碼
以上命令執行後將在當前目錄下產生一個keystore文件,裏面保存着密鑰和證書信息;
導出公鑰:
keytool -export -alias SEC_TEST -file test_pub_cer.cer -keystore test.keystore -storepass 123456
在當前目錄下會產生一個test_pub_cer.cer的證書,包含了公鑰信息及證書相關信息;
導入合做方公鑰:
通信雙方假設爲A和B,A發佈了本身的證書並公開了公鑰,B全部通過A的公鑰加密的報文發送給A後,A能夠正確解密,若是A給B發送報文,A用私鑰加密,B能夠用公鑰解密,但這裏有一個問題就是公鑰是公開的,A發送給B的報文,任何有公鑰的人均可以解密,不能保證A向B發送信息的安全性,因此B也須要製做本身的證書,並對A公開本身的公鑰,這樣A向B發送信息裏用B的公鑰加密,這樣B就能夠用私鑰解密,而其餘截獲信息的人由於沒有私鑰也不能解密;A須要將B的公鑰導入本身的證書庫;
keytool -import -file B.cer -keystore test.keystore -storepass 123456
提示是否信任這個認證,y,回車後便可導入,而後查看證書庫中的證書條目:
keytool -list -v -keystore test.keystore -storepass 123456
先寫一點,下章將以HTTPS協議爲例詳細講解使用過程。