问题描述
我正在尝试使用默认加密器解密在Laravel 7.x上创建的字符串 Laravel文档建议'Crypt :: encryptString',问题是 我到处搜索了一种在javascript级别上解密消息的方法,但我总是以空字符串结尾, 我使用了以下代码,但对我不起作用,我试图阅读laravel内部的Encryption类。
我加密邮件的方式
$test = Crypt::encryptString('Testing this');
我尝试过的解决方案:
1。以下代码
https://gist.github.com/huzemin/e8d7a904cec55d4d7635c9322f143c42
2.CryptoJS,我尝试了多种不同的选择,没有任何作用
还有一件小事,当laravel生成密钥时,它总是以base64:开头,我应该把它作为密钥的一部分吗?
示例:
APP_KEY=base64:0q2V8/90FYnWmEKpks13QMPHoEJhZLlEcr9eW0BMdhU=
//This is my key on the .env
$test = Crypt::encryptString('Testing this');
//eyJpdiI6Ilk0TGJ4eEh3WGUyTzhaWVdCMXY4SHc9PSIsInZhbHVlIjoiU3JuQXh0ekl6cEpBekgwVnJKSzBZZz09IiwibWFjIjoiYTRjYTM5ZTJlNzViMjVmZDIxMWU0Y2M0ZmQ4Y2YyZDVkZDMzOGZiMGZmMDU5N2RjNDYxMDcxMDcyNzA4ZjIzNiJ9
谢谢。
解决方法
好吧,事实证明,要点上的脚本几乎已经存在,我只需要更改我按照第23行上的“ tim-reynolds-thegrommet”注释获取密钥的方式, 第12行上的annnnd(那是他没有提到的)也许太明显了,我感到自己很蠢:(,反正 所以每个
CryptoJS.enc.Utf8.parse(this.key)
应更改为
CryptoJS.enc.Base64.parse(this.key)
是的,您不需要.env laravel文件中的密钥中的“ base64:”,只需复制其余部分,
例如:
APP_KEY=base64:0q2V8/90FYnWmEKpks13QMPHoEJhZLlEcr9eW0BMdhU=
随便拿
0q2V8/90FYnWmEKpks13QMPHoEJhZLlEcr9eW0BMdhU=
作为密钥,感谢Robert Harvey评论。