TypeError: первый аргумент должен быть одним из типов: строка, буфер, ArrayBuffer, массив или объект, подобный массиву. Полученный объект типа в cryptoJS - PullRequest
1 голос
/ 13 июля 2020

Я пытаюсь зашифровать и расшифровать данные на react-native. поэтому я решил использовать модуль крипто-узла в моем проекте React Native через браузер. Ниже приведен фрагмент кода, который я использовал для шифрования, но он выдает ошибку TypeError: первый аргумент должен быть одним из типа string, Buffer, ArrayBuffer, Array или Array-like Object. Получен объект типа в криптографии JS. кроме того, когда я использую код в nodeJS, он работает нормально, но при реагировании на родной код выдает эту ошибку. что я здесь делаю не так? Я думаю, что ошибка была инициирована оператором BUffer.from, который считает, что переменная k не является массивом или более похожим объектом. но это моя мысль, я не знаю, какова настоящая причина. Вот фрагмент кода

const algorithm = 'des-ede';
const key = [
      43,
      57,
      97,
      -68,
      -63,
      -61,
      -40,
      9,
      50,
      87,
      -104,
      101,
      63,
      34,
      -78,
      60,
    ];

    var CryptoJS = require('../crypto/crypto');

    var k = new Buffer.from(key);

    let cipher = CryptoJS.createCipheriv(algorithm, k, null);
    cipher.setAutoPadding(true); //default true
    var ciph = cipher.update("Hello World!'", 'utf8', 'base64');
    ciph += cipher.final('base64');

    console.log(ciph);

введите описание изображения здесь

1 Ответ

1 голос
/ 13 июля 2020

Проблема была решена путем простой замены null на '' в createCipheriv , спасибо @ Topaco

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...