PHP:運用對稱密鑰演算法加密與解密訊息

2021/12/29 115 0 網站技術 , 資訊安全 , PHP

一般來說,我們若直接使用 HTTP 協定傳輸資料,所有東西都會是明文傳輸,因此傳輸過程中只要有人攔截,就可以擷取到兩台機器間所傳輸的資料,這對一些具有機密性質資訊來說是存在著很大的風險!雖然 HTTPS 已經很普及了!但若在應用層就把加密寫好,那肯定會是更加的安全!所以這次要來學習使用 PHP 後端程式來做對稱密鑰演算法加密與解密訊息,所謂「對稱密鑰」就是指傳輸方與接收方不管做加密或解密都是使用同一個把私密密鑰,我們這次使用的演算法是 AES(Advanced Encryption Standard,中譯:進階加密標準),這是早期用來取代 DES(Data Encryption Standard,中譯:資料加密標準)的演算法,後者因為它使用的 56 位金鑰過短已被確認為不安全的加密方法。這次用的完整加密方法名稱為「AES-256-CBC」,剛剛已經提過最前面的了!256 是指 KEY 的長度為 32 Byte(32*8=256bit),CBC 是一種密碼的加密模式。PHP 加解密程式碼如下(程式碼修改自這篇文章)

<?php

function encrypt($key, $payload)
{
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
    $encrypted = openssl_encrypt($payload, 'aes-256-cbc', $key, 0, $iv);
    return base64_encode($encrypted . '::' . $iv);
}

function decrypt($key, $garble)
{
    list($encrypted_data, $iv) = explode('::', base64_decode($garble), 2);
    return openssl_decrypt($encrypted_data, 'aes-256-cbc', $key, 0, $iv);
}

echo $encode = encrypt("key", "password"); //Vmk0YXM1aVRmWTZwSzczV3QzNVZYQT09Ojphq8CWGy9kmz3R77cd8d9C
echo $decode = decrypt("key", $encode); //password
?>

encrypt 指的是加密、decrypt 指的是解密,過程是這樣的,我們先把「password」字串用「key」這個金鑰加密,會呈現一組看不懂的亂碼,這個就是加密後的樣子, 接著下一行程式用同一個「key」金鑰做解密,最後還原出本來的「password」字串。這個程式可以運用在很多地方,加強網站或伺服器之間的資料傳輸安全!


▲ 精選圖片。

贊助廣告 ‧ Sponsor advertisements
徵信社有甚麼服務| 外遇疑雲| 阿宅來說徵信社故事| 如何手機監聽| 徵信社抓姦介紹| 徵信價目表費用| 抓姦在床蒐證| 台北立達徵信社| 免費法律諮詢子女監護權| 馭夫術手段| 合法徵信社推薦| 挖掘徵信社新聞| 打擊小三包二奶| 抓小三蒐證| 反跟蹤可行嗎| 尋人查址高手| 夫妻協議離婚| 委託外遇蒐證| 丈夫外遇偷腥| 名人外遇新聞| 立案專業徵信社| 婚前調查協助| 離婚扶養費可以要多少| 汽車定位追蹤| 危險徵信社任務| 免費法律諮詢| 一日偵探雞排妹|
【業界首推立達徵信FB