php 加密与解密

原创
2016/12/05 09:47
阅读数 144

/**
 * laravel解密函数
 * @param $text
 * @param string $key
 * @return mixed|string
 */
function laravelDecrypt($text,$key='')
{

    $size =16;

    $defaultKey = @mcrypt_create_iv($size, MCRYPT_DEV_URANDOM);
    $key = empty($key)?$defaultKey:$key;
    $payload = json_decode(base64_decode($text), true);
    if(!$payload||!is_array($payload) || !isset($payload['iv']) || !isset($payload['value']) || !isset($payload['mac']))
    {
        return '';
    }
    $iv = base64_decode($payload['iv']);
    $decrypted = openssl_decrypt($payload['value'],'AES-256-CBC',$key,0, $iv);
    if ($decrypted === false) {
        return '';
    }
    return unserialize($decrypted);
}
function laravelEncrypt($text,$key='')
{

    $size = 16;
    $defaultKey = @mcrypt_create_iv($size, MCRYPT_DEV_URANDOM);
    $key = empty($key)?$defaultKey:$key;    
    $iv = @mcrypt_create_iv($size, MCRYPT_DEV_URANDOM);
    $value = openssl_encrypt(serialize($text),'AES-256-CBC', $key, 0, $iv);
    if ($value === false) {
        return '';
    }
    $iv = base64_encode($iv);
    $mac = hash_hmac('sha256', $iv.$value, $key);
    $json = json_encode(compact('iv', 'value', 'mac'));

    return base64_encode($json);
}

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部