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. 我希望这有帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |