我如何解密使用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.
我希望这有帮助.