Laravel 5 - Decrypt Crypt ::在Javascript中加密

时间:2015-08-15 13:38:40

标签: javascript php laravel cryptojs

我正在使用clean: { dist: { files: [{ dot: true, src: [ '.tmp', '<%= yeoman.dist %>/{,*/}*', '!<%= yeoman.dist %>/.git/**' ] }] }, server: '.tmp' }, 加密我的数据并提供给Javascript代码。如何在Javascript中解密数据?

3 个答案:

答案 0 :(得分:4)

使用laravel 5.1和CryptoJS,可以在(https://code.google.com/p/crypto-js/)找到。

在.env中设置:

  1. APP_KEY = uberkeythatrocks
  2. 在config / app.php中设置:

    1. 'cipher'=&gt; 'AES-256-CBC'
    2. MyController.php中的

      1. $ mySecret =“我想躲避他们的东西”;

      2. $ encrypted = Crypt :: encrypt($ mySecret);

      3. index.js中的

        1. var key =“uberkeythatrocks”;

        2. var decrypted = CryptoJS.AES.decrypt(加密,密钥);

        3. var readable = decrypted.toString(CryptoJS.enc.Utf8);

        4. 重要: PHP中的'key'必须与JS中的'key'相同,而PHP中的'cipher'必须与JS相同,但CryptoJS将自动选择AES-128-CBC或AES-256-CBC,具体取决于你的'钥匙'的长度。尽管laravel 5.1默认的“密码”是AES-256-CBC,但我建议你从.env文件中获取'密钥'以在JS中使用。

          从Laravel更改或生成新的“密钥”

          1. C:/ mylaravel&GT; php artisan key:生成[enter]
          2. 使用AES-128-CBC

            1. 修改config / app.php并设置'cipher'=&gt; 'AES-128-CBC'
            2. 然后

              1. C:/ mylaravel&GT; php artisan key:生成[enter]
              2. 请注意,更改“密钥”将表示现有的用户帐户登录密码将无效,除非您删除该用户,然后再创建新密码。

                希望这有助于此! :)

答案 1 :(得分:2)

CryptoJs和Laravel 6和7.x

.env 文件内放置一个Mix变量

MIX_APP_KEY=${APP_KEY}

请参阅:https://laravel.com/docs/7.x/mix#environment-variables

/resources/assets/js/app.js 中添加:

const CryptoJS = require("crypto-js");

window.decrypt = (encrypted) => {
    let key = process.env.MIX_APP_KEY.substr(7);
    var encrypted_json = JSON.parse(atob(encrypted));
    return CryptoJS.AES.decrypt(encrypted_json.value, CryptoJS.enc.Base64.parse(key), {
        iv : CryptoJS.enc.Base64.parse(encrypted_json.iv)
    }).toString(CryptoJS.enc.Utf8);
};

最后,您可以在脚本中的某处像这样进行解密:

console.log(decrypt(encrypted_text)); 

答案 2 :(得分:0)

我已解决:

我正在使用Laravel Framework 5.7.28,我想在我的node.js应用程序中解密一些用户密码

对于在我的Js文件中解密,我包括CryptoJSBase64 JS

这是代码:

  

$ key 是您的.env文件中的APP_KEY
   $ encrypted 是您在laravel中使用 Crypt :: encrypt 加密的内容

var CryptoJS = require("crypto-js");
var Base64 = require('js-base64').Base64;


var encrypted = '{{ $encrypted }}';
var key = "{{ $key }}";

var encrypted_json = JSON.parse(Base64.decode(encrypted));


// Now I try to decrypt it.
var decrypted = CryptoJS.AES.decrypt(encrypted_json.value, CryptoJS.enc.Base64.parse(key), {
       iv : CryptoJS.enc.Base64.parse(encrypted_json.iv)
});

console.log(decrypted.toString(CryptoJS.enc.Utf8));