如何解密已使用Laravel 4之外的Laravel 4 Encrypt類僅使用PHP加密的字符串?解密Laravel外部的加密值
4
A
回答
3
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, $this->key, $value, $this->mode, $iv);
}
?>
的文檔資料和意見,請在GitHub上Laravel source code。
我希望這會有所幫助。
1
Laravel的Encrypter
類很容易發生變化。這是由於一些安全漏洞得到修復。因此,要成功解密,您需要執行以下操作:
- 獲得正確的源代碼爲4.2.16;
- 讓它在你的機器上工作。確保你在相同的PHP環境下運行(使用最新版本的OpenSSL擴展);
- 使用正確的密鑰實例化
Encrypter
中的類,並可能設置正確的模式和算法; - 最後,請致電
decrypt
。
解密的所有其他所需參數(IV和MAC值)應包含在密文中。
相關問題
- 1. 加密解密Laravel 5.4
- 2. 解密加密值?
- 3. Java - 外部網站的密碼加密/解密
- 4. Laravel加密,iOS版的Android解密
- 5. pycrypto加密/解密,解密
- 6. 解密 - 加密加密JS
- 7. 解密,加密
- 8. Android外部存儲加密
- 9. CryptoJS中加密解密的Javascript加密
- 10. 加密/解密文件。用於加密/解密的ASCII +1
- 11. C#(加密)和Java(解密)之間的AES加密/解密
- 12. PHP - 解密加密密碼
- 13. 密碼加密/解密
- 14. 加密和解密密碼
- 15. 加密/解密,傳遞變量值
- 16. 如何解密TrafficScript加密值
- 17. 加密和解密
- 18. Rails加密解密
- 19. 加密/解密web.config
- 20. RSA加密/解密
- 21. Rijndael加密/解密
- 22. Cookie加密/解密
- 23. 加密和解密
- 24. 加密和解密
- 25. FormsAuthentication加密/解密
- 26. 解密加密ViewState
- 27. 加密和解密
- 28. AES加密/解密
- 29. postgresql加密/解密
- 30. Java加密/解密
OpenSSL有一個可能工作的命令行界面。 –
我的意思是PHP ^^ – Michael