OpenSSL 是目前 PHP 甚至是整個開發圈中的資料加密事實標準,包括 HTTPS/SSL 在內的加密都是它的實際應用, OpenSSL 提供了對稱和非對稱加密的形式,也就是我們日常中最普遍的兩種加密方式,
那么,它和 Hash 類的加密有什么不同嗎?Hash 類的加密是單向的不可逆轉的加密,加密后的內容是 16進制 的 Hash 串,我們只能通過彩虹表去反推明文內容,所以只要加上鹽值或者多套兩層加密,就非常難逆向破解出來了,因此,Hash 加密通常會用于用戶的密碼保存上,即使資料庫泄露了用戶密碼也依然是安全的,而 OpenSSL 這種型別的對稱/非對稱加密則是可以通過某個關鍵字或者證書來進行正向加密和逆向解密的,原文都是可以得到的,下面我們就來具體說說對稱和非對稱加密的問題,
對稱加密,通常是通過一個 key(密鑰) 來對原文進行加密,也就是說,不管是服務端還是客戶端或是其它的任何對端,在兩端通信時,它們傳輸的加密內容都必須要使用相同的 key 來進行加/解密操作,兩端都必須同時保存這樣一個 key ,估計大家也想到了,現在不管是 web 開發還是 app 開發,代碼都是可以反編譯查看到原始碼的,如果使用對稱加密的話,key 是很容易被獲取到的,不過,對稱加密的好處是速度非常快,不消耗資源,
非對稱加密則是兩端持有不同的 key ,就像我們平常見到的最多的 https 證書,就是分別有 公鑰 和 私鑰 這兩個概念,一般我們會使用 公鑰 進行加密,然后使用 私鑰 進行解密,通常 公鑰 都是公開并發送給對方的,而私鑰是保存在自己這里的,也就是說,對方向我們發送資料的時候,使用我們給它的公鑰將資料進行加密,資料在傳輸程序中就非常安全,因為中間并沒有別人有可以解密這段資料的私鑰,直到我們接收到資料后使用自己的私鑰進行解密后就得到了原文資料,由于兩邊的密鑰內容并不相同,所以相對于對稱加密來說,非對稱加密的安全性要高了很多,雖然說非對稱加密的演算法和復雜度都比對稱加密提升了好幾個檔次,但相對于對稱加密的優勢,在非對稱加密中,速度和性能也就成了它的瓶頸,特別是資料量大的情況下,另外,非對稱加密的數學原理是 大數難分解 問題,也就是越大的數越難進行因子分解,
對稱加密常用的演算法有:AES 、DES 、3DES 、 IDEA 、 RC2 、 RC5 等,比較常用的是 AES 和 DES ,
非對稱加密常用的演算法有:RSA 、Elgamal 、ECC 等,RSA 非常常用和普遍,SSL 和一些證書演算法都是基于 RSA ,
那么,我們有沒有折衷的方式來使用這兩種加密能力呢?當然有了,并且也是非常經典的一種技術:數字信封,
其實意思非常簡單,就是利用這兩種加密方式各自的優點,非對稱加密的安全性高,但速度慢,而且資料量越大速度越慢,那么我們就用它來加密對稱加密的 key ,通常這個 key 不會很大,然后實際的資料物體使用這個對稱加密的 key 來進行對稱加密提升速度,這樣,我們發送給客戶端時,就包括兩個內容,一個是非對稱加密進行加密的 key ,一個使用對稱加密進行加密的資料內容,客戶端拿到資訊后,首先使用非對稱加密的密鑰解碼出對稱加密的 key ,然后再使用這個 key 來解密最終的資料內容,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/398611.html
標籤:其他
上一篇:[ 工具篇 ] 谷歌安裝 hackbar (超級詳細)
下一篇:Vector關于Apache Log4Shell CVE-2021-45105,CVE-2021-45046,CVE-2021-44228 的安全漏洞配合與修復全面詳解
