我正在尝试在反应本机上加密和解密数据。所以我决定通过 browserify 在我的 React Native 项目中使用加密节点模块。下面是我用于加密的代码片段,但它抛出错误TypeError: The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object。在 cryptoJS 中接收类型对象。另外,当我在 NodeJS 中使用代码时,它工作正常,但在 React Native 中它会抛出该错误。我在这里做错了什么?我认为错误是从 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 = …Run Code Online (Sandbox Code Playgroud) 我有这个字符串数据要进行 Base64 解码
String mfstr = "BZCaRm9ChAbA58sgSwlhzgVuPwboh2qvgcPuLxKJkLpesdHvyZtaheThUSw6%2BHItGBtgimHpXqbn%0ApggBaRR2wisjNiyQrX03eEJlet6%2BqFL6TouRr0wW3NLRZSHOHUSFtJkpq0cyXy%2FSfMVB47y93xlq%0Az845uXSTK2Vi%2FgzwFVphHd%2BTK%2FrO%2FDxJ4EfvAoW0zxeYS%2BCWnIsl%2F4ILehVYasGtxC%2FjbG1I8S%2Fc%0AZoqXIcPmPWrszbG7R1ouDQ473TyCMLx9PBsl1Z%2Bj39V4Qr01ZRw7GVP2m%2Bk4xrHg2Im1OuXpd2vl%0AKGwe5j2T1ZHtoYxCvXOOU1YeJYSR%2Ff7Kd7KbpnjvFT2Ua%2FOdHx%2FKzBoK3Yk97fdvMcelUGMxveKq%0A8C9aCXFVU1xjK81CwB72QWkK5%2B8DCjItVDFcpnVFnhk8ZwlYKU6o8jETDockNMKiDmBYqKGpnNII%0ACnQBGiWy0inWj40k8VoFNIuVK1yYzLoVvFrYR514Ex6U2AK00c0f7C2C5vISsOEp%2BW8KHG2hFW7G%0A97IgwnX3vtQc0s0SaZ%2B7SPgbxwUujlULaOa0t5W9ZDs9b7jDyBZA7m8DiFrLH2YpzpBhrHXcw%2B%2BZ%0A";
String carg = URLDecoder.decode(mfstr, "UTF-8");
byte[] v5 = Base64.getDecoder().decode(carg.getBytes());
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,我收到错误:java.lang.IllegalArgumentException: Illegal base64 character a,到目前为止我已尝试传递StandardCharsets.UTF_8但carg.getBytes()没有任何结果。我在这里做错了什么?
base64 ×1
browserify ×1
encoding ×1
encryption ×1
java ×1
javascript ×1
node.js ×1
react-native ×1
urlencode ×1