扫码关注官方订阅号
我知道PHP有提供openssl模块,但是我对这个模块不了解,请问有没有了解的朋友。非常感谢。
认证高级PHP讲师
function encrypt($value, $key = '1234567891234567') { $length = mb_strlen($key, '8bit'); if (!$length === 16) { return false; } $seeds = '0123456789abcdefghijklmnopqrstuvwxyz'; $length = 16; $iv = substr(str_shuffle(str_repeat($seeds, $length)), 0, $length); $value = \openssl_encrypt(serialize($value), 'AES-128-CBC', $key, 0, $iv); if ($value === false) { return false; } $iv = base64_encode($iv); $mac = hash_hmac('sha256', $iv.$value, $key); $json = json_encode(compact('iv', 'value', 'mac')); if (! is_string($json)) { return false; } return base64_encode($json); } function decrypt($payload, $key = '1234567891234567') { $length = mb_strlen($key, '8bit'); if (!$length === 16) { return false; } $payload = json_decode(base64_decode($payload), true); if (! $payload || ! is_array($payload) || ! isset($payload['iv']) || ! isset($payload['value']) || ! isset($payload['mac'])) { return false; } $seeds = '0123456789abcdefghijklmnopqrstuvwxyz'; $length = 16; $bytes = substr(str_shuffle(str_repeat($seeds, $length)), 0, $length); $hash = hash_hmac('sha256', $payload['iv'].$payload['value'], $key); $calcMac = hash_hmac('sha256', $hash, $bytes, true); if (! hash_equals(hash_hmac('sha256', $payload['mac'], $bytes, true), $calcMac)) { return false; } $iv = base64_decode($payload['iv']); $decrypted = \openssl_decrypt($payload['value'], 'AES-128-CBC', $key, 0, $iv); if ($decrypted === false) { return false; } return unserialize($decrypted); } $str = '123456'; $encrypt = encrypt($str); $decrypt = decrypt($encrypt); var_dump($decrypt); 随便写的,看着用吧
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
认证高级PHP讲师