Laravel 7.x加密,CryptoJS解密?

问题描述

我正在尝试使用认加密器解密在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评论。