加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – 在Laravel之外解密加密值

发布时间:2020-12-14 19:43:16 所属栏目:大数据 来源:网络整理
导读:我如何解密使用Laravel之外的Laravel 4 Encrypt类加密的字符串,仅使用 PHP? 解决方法 Laravel Encrypter类使用Rijndael,块大小为256位,用于加密,由Mcrypt PHP扩展提供. Encrypter类使用两种简单方法:encrypt()和decrypt(). 以下示例: ?php$secret = Crypt
我如何解密使用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.

我希望这有帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读