json_encode()
本身并不提供加密功能,它主要用于將 PHP 數組或對象轉換為 JSON 字符串
openssl_random_pseudo_bytes()
生成一個密鑰):$key = openssl_random_pseudo_bytes(32); // 生成一個 32 字節的隨機密鑰
openssl_encrypt()
和 openssl_decrypt()
的示例:function encrypt($data, $key) {
$ivlen = openssl_cipher_iv_length('AES-256-CBC');
$iv = openssl_random_pseudo_bytes($ivlen);
$ciphertext = openssl_encrypt($data, 'AES-256-CBC', $key, 0, $iv);
return base64_encode($iv . $ciphertext);
}
function decrypt($data, $key) {
$data = base64_decode($data);
$ivlen = openssl_cipher_iv_length('AES-256-CBC');
$iv = substr($data, 0, $ivlen);
$ciphertext = substr($data, $ivlen);
return openssl_decrypt($ciphertext, 'AES-256-CBC', $key, 0, $iv);
}
json_encode()
將加密后的數據轉換為 JSON 字符串:$data = [
'name' => 'John Doe',
'age' => 30,
'email' => 'john.doe@example.com'
];
$encryptedData = encrypt($data, $key);
$jsonEncryptedData = json_encode(['encryptedData' => $encryptedData]);
現在,你可以將加密后的 JSON 字符串存儲在數據庫中或通過 API 發送。
當需要解密數據時,只需對 JSON 字符串進行解碼,然后使用 json_decode()
將其轉換回數組,并使用之前定義的 decrypt()
函數進行解密:
$jsonDecryptedData = json_decode($jsonEncryptedData, true);
$encryptedData = $jsonDecryptedData['encryptedData'];
$decryptedData = decrypt($encryptedData, $key);
$decryptedArray = json_decode($decryptedData, true);
print_r($decryptedArray);
請注意,這個示例僅用于演示目的。在實際應用中,你可能需要考慮更多的安全性和錯誤處理。