首頁  >  文章  >  後端開發  >  PHP實作AES對稱加密技術

PHP實作AES對稱加密技術

WBOY
WBOY原創
2023-06-18 08:46:134476瀏覽

隨著資訊科技的不斷發展,加密技術越來越廣泛地應用於各個領域。其中,AES對稱加密技術是目前最常使用的加密演算法之一,它能夠保證資料的安全性,應用範圍廣泛。本篇文章將介紹如何使用PHP實現AES對稱加密技術。

一、什麼是AES對稱加密技術?

AES是Advanced Encryption Standard(高級加密標準)的縮寫,是目前應用最廣泛的對稱加密演算法之一。對稱加密是指加密和解密使用相同的金鑰,其原理就是將明文和金鑰進行複雜的異或運算、移位和代換等操作,得到密文。如果沒有金鑰,則無法解密。

二、PHP中使用AES對稱加密

1.載入openssl擴充功能並產生金鑰

在PHP中使用AES對稱加密,需要使用openssl擴充。可以在php.ini檔案中開啟此擴展,也可以在程式碼中使用以下程式碼來載入它:

extension=php_openssl.dll

產生加密和解密所需的金鑰需要使用openssl_random_pseudo_bytes()函數,如下所示:

$key = openssl_random_pseudo_bytes(16);

此函數產生16位元組的隨機數,用於加密和解密。

2.加密和解密

接下來,我們可以使用 openssl_encrypt() 和 openssl_decrypt() 函數對資料進行加密和解密。

下面是使用openssl_encrypt() 函數進行加密的程式碼範例:

$data = 'hello world';
$cipher = 'AES-128-CBC';
$ivlen = openssl_cipher_iv_length($cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
$encrypted_data = openssl_encrypt($data, $cipher, $key, OPENSSL_RAW_DATA, $iv);
$encrypted_data = base64_encode($encrypted_data . ':' . $iv);

解釋一下程式碼:

    ##第一個參數為需要加密的資料;
  • 第二個參數為加密演算法,可以選擇AES-128-CBC、AES-192-CBC或AES-256-CBC;
  • 第三個參數為金鑰;
  • 第四個參數為加密方式,可選擇OPENSSL_RAW_DATA或OPENSSL_ZERO_PADDING;
  • 第五個參數為初始化向量(IV),用於增加加密演算法的強度。
注意:在加密後的密文前需要新增IV,以便在解密時使用。

下面是使用openssl_decrypt() 函數進行解密的程式碼範例:

$encrypted_data = base64_decode($encrypted_data);
$parts = explode(':', $encrypted_data);
$decrypted_data = openssl_decrypt($parts[0], $cipher, $key, OPENSSL_RAW_DATA, $parts[1]);

解釋一下程式碼:

    第一個參數為需要解密的資料;
  • 第二個參數為加密演算法,需要與加密時所使用的演算法相同;
  • 第三個參數為金鑰,需要與加密時所使用的金鑰相同;
  • 第四個參數為加密方式,需要與加密時所使用的方式相同;
  • 第五個參數為IV,需要與加密時所使用的IV相同。
三、程式碼範例

下面是完整的加密與解密範例程式碼:

$key = openssl_random_pseudo_bytes(16);
$data = 'hello world';
$cipher = 'AES-128-CBC';
$ivlen = openssl_cipher_iv_length($cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
$encrypted_data = openssl_encrypt($data, $cipher, $key, OPENSSL_RAW_DATA, $iv);
$encrypted_data = base64_encode($encrypted_data . ':' . $iv);
$encrypted_data = base64_decode($encrypted_data);
$parts = explode(':', $encrypted_data);
$decrypted_data = openssl_decrypt($parts[0], $cipher, $key, OPENSSL_RAW_DATA, $parts[1]);
echo $decrypted_data;

執行程式碼後,輸出為:

hello world

四、總結

本文介紹了使用PHP實作AES對稱加密技術的方法,包括產生金鑰、加密、解密等操作。 AES對稱加密演算法是目前應用最廣泛的加密演算法之一,安全性較高,適用範圍廣泛。希望這篇文章能幫助你了解並應用AES對稱加密技術。

以上是PHP實作AES對稱加密技術的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn