經常使用術語:html
加密:encryption 解密:decryptiongit
祕鑰:secret key (公鑰:public key 私鑰:private key)算法
數字簽名:digital signature瀏覽器
數字證書:digital certificate安全
摘要:digest服務器
能夠參考的文章:What is a Digital Signature? (翻譯:數字簽名是什麼?)網絡
Base64也不是加密解密算法,只能算是一個編碼算法,一般用於把二進制數據編碼爲可寫的字符形式的數據,對數據內容進行編碼來適合傳輸(能夠對img圖像編碼用於傳輸)。這是一種可逆的編碼方式。函數
更多Base64相關知識可參考博客:base64工具
這64個字符爲:post
a-z(26個)、A-Z(26個)、0-9(10個)、+ 和 / (2個),共64個。
常見的散列算法有MD五、SHA一、HMAC。散列算法並非加密算法。
密碼一般用md5算法加密,雖然不能經過逆向的方式恢復成明文,可是卻能夠經過碰撞的方式獲得原密碼或者替代密碼。
(簡單具體例子,假設密碼是數字2,而hash算法是對原數字進行平方運算,2的平方爲4,實際上咱們不須要也不可能經過逆向獲得原密碼2,但只須要找到其替代值-2就足以。)
md5加鹽
鹽,是一串比較複雜的字符串。加鹽的目的是增強加密的複雜度,固然這個「鹽」越長越複雜,加密後破解起來就越麻煩。加鹽並不表示就安全了,「鹽」也可能被泄漏出去。
另外,加鹽也不必定加固定的鹽。
SHA-1密碼算法,由美國專門制定密碼算法的標準機構———美國國家標準技術研究院與美國國家安全局設計,早在1994年就被推薦給美國政府和金融系統採用,是美國政府目前應用最普遍的密碼算法。
散列消息鑑別碼,基於密鑰的Hash算法的認證協議。
補充:王小云和她的研究小組已經宣佈,成功破解MD5和SHA-1等加密算法。實際上並非真正意義上的破解,只是提升了碰撞效率。
對稱加密就是通訊雙方使用相同的祕鑰加密解密。
對稱加密算法有DES、3DES(TripleDES),DESede、AES、Blowfish,以及RC2和RC4算法,還有其餘第三方提供的軟件包提供的Bouncy Castle 提供的IDEA算法。
這裏面DES算是最經典的算法,DESede是DES算法的變種,AES算是DES算法的替代者;
AES(Advanced Encryption Standard)
AES翻譯過來是高級加密標準,它是用來替代以前的DES加密算法的。可是由於AES加密算法的安全性要高於DES和3DES,因此AES已經成爲了主要的對稱加密算法。
更多對稱加密算法的知識可參考博客:對稱加密及AES加密算法
非對稱加密使用一對密鑰:公鑰(public key)和私鑰(private key)。私鑰只能由一方安全保管,不能外泄,而公鑰則能夠發給任何請求它的人。
公鑰和私鑰是成對出現的,它們能夠互相解密。公鑰加密的內容,只有私鑰能夠解密。私鑰加密的內容,只有公鑰能夠解密。
(公鑰加密私鑰解,私鑰簽名公鑰驗證。 )
主要的非對稱加密算法有RSA、Elgamal、揹包算法、Rabin、D-H、ECC(橢圓曲線加密算法)。
使用最普遍的是RSA算法,Elgamal是另外一種經常使用的非對稱加密算法
截取一段內容,來自對稱加密及AES加密算法
非對稱加密算法的效率是很是低的。
將內容使用hash函數生成摘要,再用私鑰對摘要進行加密,生成數字簽名。而後將內容附上數字簽名一同傳輸。
收件方收到後,用公鑰對數字簽名進行解密,獲得摘要,而後再對原內容進行hash生成摘要,比對這兩個摘要是否相同,相同則說明內容沒有被篡改。
由CA頒發給網站的身份證書,裏面包含了該網站的公鑰,有效時間,網站的地址,CA的數字簽名等。
所謂的CA數字簽名,實際上就是使用了CA的私鑰將網站的公鑰等信息進行了簽名,當客戶端請求服務器的時候,網站會把證書發給客戶端,客戶端首先能夠經過CA的數字簽名校驗CA的身份,也能證實證書的真實完整性。客戶端有沒有可能到一個假冒的CA去校驗數字證書呢?不太可能,由於CA的地址是內嵌在瀏覽器中的,很難被篡改。
keytool和openssl都是證書管理工具。openssl和keytool的區別能夠參考數字證書管理工具openssl和keytool的區別
keytool是Java自帶的數字證書管理工具,用於數字證書的生成,導入,導出與撤銷等操做。它與本地密鑰庫關聯,並能夠對本地密鑰庫進行管理,能夠將私鑰存放於密鑰庫中,而公鑰使用數字證書進行輸出。keytool位於jdk安裝目錄的bin文件夾下。
openssl官網地址:https://www.openssl.org/
待補充:使用keytool和openssl生成自簽名證書步驟
總結:
對稱加密與解密使用的是相同的密鑰,因此速度快,但因爲須要將密鑰在網絡傳輸,因此安全性不高。
非對稱加密使用了一對密鑰:公鑰與私鑰,因此安全性高,但加密與解密速度慢。
一般的辦法是將對稱加密的密鑰使用非對稱加密的公鑰進行加密,而後發送出去,接收方使用私鑰進行解密獲得對稱加密的密鑰,而後雙方仍然可使用對稱加密來進行溝通。