php 加密與解密

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

    $size =16;json

    $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'));.net

    return base64_encode($json);
}code

相關文章
相關標籤/搜索