openssl是一個非常常用的加密庫,它提供了很多加密算法以及密鑰管理等功能。在PHP中,也提供了很多openssl相關(guān)的函數(shù)來讓我們方便的使用這個庫。本文將會介紹一些常用的openssl PHP函數(shù),幫助大家更好的理解和使用。
一、openssl_encrypt、openssl_decrypt函數(shù)
這兩個函數(shù)是最常用的openssl PHP函數(shù)之一,用來對數(shù)據(jù)進行加密和解密。我們可以指定加密算法、編碼方式以及密鑰等參數(shù),非常靈活方便。下面是一個加密字符串并解密的示例代碼:
$plaintext = "Hello World!"; $cipher = "AES-256-CBC"; $key = openssl_random_pseudo_bytes(32); $iv = openssl_random_pseudo_bytes(16); $ciphertext = openssl_encrypt($plaintext, $cipher, $key, OPENSSL_RAW_DATA, $iv); $decrypted = openssl_decrypt($ciphertext, $cipher, $key, OPENSSL_RAW_DATA, $iv); echo $decrypted; // 輸出為 "Hello World!"我們首先定義了一個要加密的明文字符串,然后定義了加密算法為AES-256-CBC。密鑰和iv都是通過openssl_random_pseudo_bytes函數(shù)自動生成的。接著,我們使用openssl_encrypt函數(shù)對明文進行加密,得到了密文。最后,通過openssl_decrypt函數(shù)對密文進行解密得到了原始明文。 二、openssl_pkey_new、openssl_pkey_export函數(shù) 這兩個函數(shù)用于生成RSA公私鑰對。我們可以指定密鑰長度、加密算法等參數(shù)生成不同的密鑰對。下面是一個生成RSA密鑰對并導出的示例:
$keyconfig = array( "private_key_bits" =>2048, "private_key_type" =>OPENSSL_KEYTYPE_RSA ); $keypair = openssl_pkey_new($keyconfig); openssl_pkey_export($keypair, $private_key); echo $private_key; // 輸出私鑰我們首先定義了生成密鑰對的參數(shù),指定了密鑰長度為2048位,加密算法為RSA。然后,使用openssl_pkey_new函數(shù)生成了密鑰對。最后,通過openssl_pkey_export函數(shù)導出私鑰并輸出。 三、openssl_csr_new、openssl_csr_sign函數(shù) 這兩個函數(shù)用于生成和簽名證書請求。我們可以指定證書請求中包含的信息、加密算法、簽名證書等參數(shù)。下面是一個生成證書請求并簽名的示例:
$dn = array( "commonName" =>"www.example.com" ); $keyconfig = array( "private_key_bits" =>2048, "private_key_type" =>OPENSSL_KEYTYPE_RSA ); // 生成私鑰 $keypair = openssl_pkey_new($keyconfig); openssl_pkey_export($keypair, $private_key); // 生成證書請求 $csr = openssl_csr_new($dn, $keypair); // 簽名證書請求 $ca_keypair = openssl_pkey_new($keyconfig); $ca_dn = array( "commonName" =>"local-ca" ); $ca_csr = openssl_csr_new($ca_dn, $ca_keypair); $ca_cert = openssl_csr_sign($ca_csr, null, $ca_keypair, 365); // 導出證書 $cert = openssl_csr_sign($csr, $ca_cert, $ca_keypair, 365); openssl_x509_export($cert, $output); echo $output; // 輸出證書我們首先定義了證書請求的信息,指定了訪問的域名為www.example.com。然后,使用openssl_pkey_new函數(shù)生成了私鑰。接著,使用openssl_csr_new函數(shù)生成了證書請求。接下來,我們又使用openssl_csr_sign函數(shù)對證書請求進行簽名。簽名證書使用了一個新的私鑰和證書請求,有效期為365天。最后我們通過openssl_x509_export函數(shù)導出并輸出了證書。 本文介紹了一些常用的openssl PHP函數(shù),包括加密解密、生成RSA密鑰對和證書請求以及簽名等功能。我們可以根據(jù)不同的需求采用不同的函數(shù),靈活使用openssl庫。