TypeError:第一个参数必须是字符串,Buffer,ArrayBuffer,Array或类似数组的对象之一。 cryptoJS中收到的类型对象

时间:2020-07-13 06:19:20

标签: javascript node.js react-native encryption browserify

我正在尝试对react-native上的数据进行加密和解密。所以我决定通过browserify在我的本地反应项目中使用加密节点模块。以下是我用于加密的代码段,但抛出错误 TypeError:第一个参数必须是字符串,Buffer,ArrayBuffer,Array或类似数组的对象之一。在cryptoJS中收到类型对象。另外,当我在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);

enter image description here

1 个答案:

答案 0 :(得分:1)

问题已解决,只需在 createCipheriv 中用''替换 null ,谢谢 @Topaco