Я использую Crypt::encrypt
для шифрования своих данных и передачи кода Javascript. Как я могу расшифровать данные в Javascript?
Laravel 5 — Расшифровать Crypt::encrypt в Javascript
Ответы (3)
Использование laravel 5.1 и CryptoJS, которые можно найти по адресу (https://code.google.com/p/crypto-js/).
в наборе .env:
- APP_KEY=uberkeythatrocks
в config/app.php установить:
- 'шифр' => 'AES-256-CBC'
в MyController.php:
$mySecret = "Что-то, что я хочу скрыть от них";
$encrypted = Crypt::encrypt($mySecret);
в index.js:
var key = "uberkeythatrocks";
var decrypted = CryptoJS.AES.decrypt (зашифровано, ключ);
var readable = decrypted.toString(CryptoJS.enc.Utf8);
ВАЖНО: «Ключ» в PHP должен совпадать с «ключом» в JS, а «шифр» в PHP должен быть таким же в JS, однако CryptoJS автоматически выберет либо AES-128-CBC, либо AES-256-CBC в зависимости от на длину вашего «ключа». Хотя «шифр» по умолчанию в laravel 5.1 — это AES-256-CBC, поэтому я бы посоветовал вам получить «ключ» из файла .env для использования в JS.
Чтобы изменить или сгенерировать новый «ключ» из Laravel
- C:/mylaravel> php artisan key:generate [введите]
Чтобы использовать AES-128-CBC
- Отредактируйте config/app.php и установите «шифр» => «AES-128-CBC».
тогда
- C:/mylaravel> php artisan key:generate [введите]
ОБРАТИТЕ ВНИМАНИЕ, что изменение «ключа» будет означать, что существующий пароль для входа в учетную запись пользователя не будет работать, если вы не удалите пользователя, а затем не создадите нового.
НАДЕЮСЬ ЭТО ПОМОЖЕТ! :)
DecryptException in BaseEncrypter.php line 45:The payload is invalid.
- person karmendra; 12.04.2017
CryptoJs и Laravel 6 и 7.x
Поместите переменную Mix в файл .env.
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));
Я РЕШАЮ ЭТО:
Я использую Laravel Framework 5.7.28 и хочу расшифровать пароли некоторых пользователей в своем приложении node.js.
Для расшифровки в моем файле Js я включаю CryptoJS и Base64 JS
Вот код:
$key — это APP_KEY, который у вас есть в вашем файле .env.
$encrypted — это то, что вы шифруете с помощью 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));
atob
вместо того, чтобы требовать пакет js-base64. И убедитесь, что вы удалили префикс base64:
из ключа laravel.
- person Nurul Huda; 24.09.2019