php – 在Laravel之外解密加密值

前端之家收集整理的这篇文章主要介绍了php – 在Laravel之外解密加密值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我如何解密使用Laravel之外的Laravel 4 Encrypt类加密的字符串,仅使用 PHP

解决方法

Laravel Encrypter类使用Rijndael,块大小为256位,用于加密,由Mcrypt PHP扩展提供. Encrypter类使用两种简单方法:encrypt()和decrypt().

以下示例:

<?PHP

$secret = Crypter::encrypt('some text here'); //encrypted

$decrypted_secret = Crypter::decrypt($secret); //decrypted

?>

既然你在“Laravel之外”询问如何做到这一点:

加密和解密由加密器类完成. Laravel来源是公开的,这里是相关部分:

<?PHP

    public function encrypt($value)
    {
        $iv = mcrypt_create_iv($this->getIvSize(),$this->getRandomizer());
        $value = base64_encode($this->padAndMcrypt($value,$iv));
        $mac = $this->hash($iv = base64_encode($iv),$value);

        return base64_encode(json_encode(compact('iv','value','mac')));
    }

    protected function padAndMcrypt($value,$iv)
    {
        $value = $this->addPadding(serialize($value));
        return mcrypt_encrypt($this->cipher,$this->key,$value,$this->mode,$iv);
    }

    public function decrypt($payload)
    {
        $payload = $this->getJsonPayload($payload);
        $value = base64_decode($payload['value']);
        $iv = base64_decode($payload['iv']);
        return unserialize($this->stripPadding($this->mcryptDecrypt($value,$iv)));
    }

    protected function mcryptDecrypt($value,$iv)
    {
        return mcrypt_decrypt($this->cipher,$iv);
    }

?>

有关文档和注释,请参阅GitHub上的Laravel source code.

我希望这有帮助.

猜你在找的Laravel相关文章