星期
PHP传参加密
首页 > 我的学习历程    作者:月丶   2019年5月23日 11:31 星期四   热度:2012°   百度已收录  
时间:2019-5-23 11:31   热度:2012° 

使用openssl_encrypt/openssl_decrypt方式加解密(需要PHP版本7+)。

加解密类:


class Crypt {
    /**
     * 加密字符串
     * @param  string $string 要加密的字符串
     * @param  string $key    加密私钥
     * @return array
     */     public function encrypt($string, $key)     {
        $ivlen = openssl_cipher_iv_length('AES-256-CBC');
        $iv = openssl_random_pseudo_bytes($ivlen);
        $encrypted = openssl_encrypt($string, 'AES-256-CBC', $key, $options = OPENSSL_RAW_DATA, $iv);
        $data = [
            'hash' => hash_hmac('sha256', $encrypted, $key),
            'data' => base64_encode($iv . $encrypted),
        ];
        return $data;
    }
    /**
     * 解密字符串
     * @param  string $string 要解密的字符串
     * @param  string $key    私钥
     * @param  string $hash   校验hash
     * @return string
     */     public function decrypt($string, $key, $hash)     {
        $data = base64_decode($string);
        $ivlen = openssl_cipher_iv_length('AES-256-CBC');
        $iv = substr($data, 0, $ivlen);
        $data = substr($data, $ivlen);
        $decrypted = openssl_decrypt($data, 'AES-256-CBC', $key, $options = OPENSSL_RAW_DATA, $iv);
        $hash = hash_hmac('sha256', $data, $key);
        if ($hash !== $hash) {
            return false;
        }
        return $decrypted;
    }
} 


测试内容:


$crypt = new Crypt;
$key = '20190523';
$string = json_encode(['Hello' => 'World']);
$encrypted = $crypt->encrypt($string, $key);
var_dump($encrypted); echo "<br>";
$decrypted = $crypt->decrypt($encrypted['data'], $key, $encrypted['hash']);
var_dump($decrypted); 



原文地址:http://www.debugphp.com/php/29.html

二维码加载中...
本文作者:月丶      文章标题: PHP传参加密
本文地址:http://silver.eleuu.com/?post=22
版权声明:若无注明,本文皆为“月丶”原创,转载请保留文章出处。

返回顶部    手机版本    会员注册   
版权所有:月丶    博主: 月丶    团队首页电子乌托邦  博客框架:emlog   蜀ICP备18008322号   
  
//音乐播放器