在我們做專案的時候免不了使用介面請求數據,或透過介面給其他應用程式提供數據,但是在網路請求中我們的資料是可以別一些軟體抓取到的,這樣我們的資料就會別外洩或被人竄改,在我們實際專案中該怎麼處理呢?
下面先簡單的說一下幾種加密演算法:
1.DES對稱加密演算法,全稱為Data Encryption Standard,是一種使用金鑰加密的區塊演算法。加密串的長度是64位元(bit),超過位元加密串被忽略。所謂對稱性加密即加密和解密金鑰相同,對稱性加密一般會依照固定長度,把待加密字串分成區塊,不足一整塊或剛好最後有特殊填充字元。 (16輪Feistel型迭代密碼,分組長度64bit,用56bit密鑰加密64bit長度)
2.AES高級加密標準(英文:Advanced Encryption Standard,縮寫:AES),在密碼學中又稱Rijndael加密法,是DES的升級版,AES的分組長度是128bit,三種可選密鑰長度128bit,192bit和256bit,輪數分別為10、12和14。
3.RSA加密演算法是一種非對稱加密演算法,使用公鑰加密的資料,利用私鑰進行解密,加密或簽署後的結果是不可讀的二進制,使用時經常會轉為BASE64 碼再傳輸.
4.SHA1和MD5是雜湊演算法,將任意大小的資料對應到一個較小的、固定長度的唯一值。加密性強的雜湊一定是不可逆的,這意味著透過雜湊結果,無法推出任何部分的原始資訊。
相關推薦:《php入門教學》
介面加密第一種:
傳送者與接收者約定一個加密的鹽值,進行生成簽名,雙方對資料進行排序然後拼接上加密的鹽值進行MD5加密然後就生成了一個簽名,然後發送方和接收方接收到資料以後按彼此約定的加密步驟進行簽名驗證,這樣保證了資料的準確性,不會被竄改,但是傳輸的資料是可以被他人可見的。
如:md5(url?age=12&name=xiaomign&key=1234567890)
介面加密第二種:
#傳送者和接收者約定一個加密的鹽值,加密方法,加密向量,對資料進行對稱加密,然後使用的時候進行解密。
如:
$method = "AES-128-CBC"; $key = "2911827315869D7F"; $iv = "1234567812345678"; $passcrypt = openssl_encrypt(json_encode(['name'=>'xiaoming', 'age' => 19]), $method, $key, OPENSSL_RAW_DATA, $iv); echo base64_encode($passcrypt); $data = base64_decode($request_data); $data = openssl_decrypt($data, $method, $key, OPENSSL_RAW_DATA, $iv); $data = json_decode($data, true);
我們使用的htts協定就是使用RSA演算法和對稱加密演算法加密傳輸資料的。
1.客戶端向伺服器端發起SSL連線請求;
2.伺服器把公鑰傳送給客戶端,伺服器端保存著唯一的私鑰;
3.客戶端用公鑰對雙方通訊的對稱秘鑰進行加密,並發送給伺服器端;
4.伺服器利用自己唯一的私鑰對客戶端發來的對稱秘鑰進行解密,在此過程中,中間方無法對其解密(即使是客戶端也無法解密,因為只有伺服器端擁有唯一的私鑰),這保證了對稱秘鑰在收發過程中的安全,此時,伺服器端和客戶端擁有了一套完全相同的對稱秘鑰。
5.進行資料傳輸,伺服器和客戶端雙方以公有的相同的對稱秘鑰對資料進行加密解密,可以保證在資料收發過程中的安全,即是第三方獲得資料包,也無法對其進行加密,解密和篡改。
以上是php介面怎麼加密的詳細內容。更多資訊請關注PHP中文網其他相關文章!