使用Crypt解密时出现DecryptException的原因及解决办法

首先需要知道的是使用Crypt加密数据时生成的密文并不是唯一值,同一数据多次执行encrypt()加密结果都不相同,且在不同Laravel项目中也无法解密同一个密文。例如在Laravel项目A中用encrypt()生成的密文无法在项目B中用decrypt()解密,会抛出DecryptException异常,异常描述是The MAC is invalid.这是因为在使用Crypt对数据进行加密,所有加密值都通过一个消息认证码(MAC)来检测对加密字符串的任何修改,不同app_key的项目之间无法使用decrypt()解密。这是一种比之前常用的md5加密和sha1加密要安全得多的一种加密方式。
知道了这一点,DecryptException的两种解决办法也显而易见:

  1. 在此项目中将数据再重新加密一次并保存到数据库。
  2. 将之前项目.env文件中APP_KEY的值替换当前项目的APP_KEY。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,347评论 19 139
  • 概述 之前一直对加密相关的算法知之甚少,只知道类似DES、RSA等加密算法能对数据传输进行加密,且各种加密算法各有...
    Henryzhu阅读 8,153评论 0 14
  • 本文主要介绍移动端的加解密算法的分类、其优缺点特性及应用,帮助读者由浅入深地了解和选择加解密算法。文中会包含算法的...
    苹果粉阅读 13,954评论 5 29
  • 1.数据安全 01 攻城利器:Charles(公司中一般都使用该工具来抓包,并做网络测试) 注意:Charles在...
    Lucky丶晴阅读 5,331评论 0 9
  • 华灯初上月 夜撒人间霜 虫泣鸣声落 闻者尤其殇
    下笔落忧伤阅读 1,358评论 0 1