[英]PHP encryption using OpenSSL
我一直試圖編寫兩個函數來加密和解密我的數據,因為我以純文本形式存儲了一些我不想進入數據庫的信息。 加密功能可以正常工作。 但是我不知道為什么解密不帶回純文本?
我做錯了什么嗎?
<?php
$string = "This is my string!";
$encryption_key = "DVF0!LoQs2bPyTvSF0epXPFStbIn!057";
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length(AES_256_CBC));
function encryptString($encryption_key, $iv, $string) {
define('AES_256_CBC', 'aes-256-cbc');
$encrypted = openssl_encrypt($string, AES_256_CBC, $encryption_key, 0, $iv);
return $encrypted;
}
function decryptString($encryption_key, $iv, $encrypted) {
define('AES_256_CBC', 'aes-256-cbc');
$encrypted = $encrypted . ':' . $iv;
$parts = explode(':', $encrypted);
$decrypted = openssl_decrypt($parts[0], AES_256_CBC, $encryption_key, 0, $parts[1]);
return $decrypted;
}
$encryptstring = encryptString($encryption_key, $iv, $string);
$decryptstring = decryptString($encryption_key, $iv, $encryptstring);
?>
原文: <? print $string; ?>
<? print $string; ?>
加密密鑰: <?php print $encryption_key; ?>
<?php print $encryption_key; ?>
加密的func: <?php print $encryptstring; ?>
<?php print $encryptstring; ?>
解密的func: <?php print $decryptstring; ?>
<?php print $decryptstring; ?>
每次使用openssl_random_pseudo_bytes
函數調用時,加密密鑰都會更改
將密鑰設為靜態,例如$encryption_key = "XXXX";
或全局變量,並且只能調用一次。
不要忘記也將其應用於您的$ iv。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.