Как расшифровать Laravel Encrypter в клиенте Javascript? - PullRequest
0 голосов
/ 10 июля 2019

Я зашифровал ответ с сервера с помощью шифратора Laravel.

Я использую Laravel 5.8

use Illuminate\Encryption\Encrypter;
....
$key = "ls1KlnDpyl2ZJT0vdNX1tNygAftBlgah";
$value = "secret";
$encrypter = new Encrypter($key, 'AES-256-CBC');
$encrypt = $encrypter->encryptString($value);
return response()->json([
           'payload' => $encrypt
       ], 200);

У меня вопрос, как расшифровать его в клиенте javascript? или как зашифровать расшифровать в javascript, если я хочу использовать шифровальщик Laravel для чтения.

1 Ответ

0 голосов
/ 10 июля 2019

Я нашел способ расшифровать его. но без проверки

Пример кода:


<script src="https://cdn.jsdelivr.net/npm/js-base64@2.5.1/base64.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>

<script>

function decrypt(){

  // key set on the server when encrypt using Laravel encrypter
  var key = "ls1KlnDpyl2ZJT0vdNX1tNygAftBlgah";

  // response from server
  var encrypted = "eyJpdiI6IjN2UmswOFVOd0lncHh4cCszbThnc1E9PSIsInZhbHVlIjoiMllmZ0dHTCtmejg0VFV1dVlFZVNhQT09IiwibWFjIjoiYzliODBkYTUzMDlmODEwMjJlY2Y2ZDhmN2UwM2NkN2FjYTc3OThjOTA3NTAyYTIxMDM3MjE5NDY2NTlhY2RjMSJ9";

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

  // {"iv":"3vRk08UNwIgpxxp+3m8gsQ==","value":"2YfgGGL+fz84TUuuYEeSaA==","mac":"c9b80da5309f81022ecf6d8f7e03cd7aca7798c907502a2103721946659acdc1"}

  var decrypted = CryptoJS.AES.decrypt(encrypted_json.value, CryptoJS.enc.Base64.parse(Base64.encode(key)),{
                     iv: CryptoJS.enc.Base64.parse(encrypted_json.iv),
                     mode: CryptoJS.mode.CBC
                  });
  console.log('decripted : ' + decrypted.toString(CryptoJS.enc.Utf8));

}


</script>

А теперь, как зашифровать в javascript, и я могу прочитать его на сервере с помощью шифратора Laravel?

...