天天看點

Java安全之對稱加密、非對稱加密、數字簽名

Java中加密分為兩種方式一個是對稱加密,另一個是非對稱加密。對稱加密是因為加密和解密的鑰匙相同,而非對稱加密是加密和解密的鑰匙不同。

對稱加密與非對稱加密的差別:

對稱加密稱為密鑰加密,速度快,但加密和解密的鑰匙必須相同,隻有通信雙方才能知道密鑰。

非對稱加密稱為公鑰加密,算法更加複雜,速度慢,加密和解密鑰匙不相同,任何人都可以知道公鑰,隻有一個人持有私鑰可以解密。

對稱加密解密:

基于密碼的對稱加密與解密

系統自動生成的Key不容易記憶,我們可以使用我們容易記憶的密碼同過java自帶的一個工具将它轉換成Key,在解密的時候我們就可以通過密碼進行解密。

非對稱加密解密:

非對稱加密是公鑰加密,私鑰來解密,這個個人做用的少一點,主要針對于大型的網站大型的企業

數字簽名:

數字簽名的基礎是公鑰和私鑰的非對稱加密,發送者使用私鑰加密的消息摘要(簽名),接收者使用公鑰解密消息摘要以驗證簽名是否是某個人。

要證明這段資料是你發過來的,并且沒有被别人改過,這就需要用到數字簽名,首先我們對整個文檔進行md5加密得到16個位元組,然後把消息摘要和文檔發過去,解密者首先對發過來的文檔進行解密,解密後得到一個摘要(md5),對接收的文檔進行md5加密,得到的md5結果比對解密後的摘要,如果比對成功的話證明沒有修改過,我們使用Signature進行簽名