Nodejs 加密 运行报错

发布于 1周前 作者 songsunli 来自 nodejs/Nestjs

Nodejs 加密 运行报错

https://www.v2ex.com/t/471332#reply29 原帖 因为算法内容太多,所以只保留小部分

if (1 === o) { var D = N.length, j = 0; D && (j = N.charCodeAt(D - 1)), j<=8 && (N = N.substring(0, D - j)) }

N ==decodeURIComponent(escape(N)) } return N }

/home/shenjianlin/js/code.js:42 N ==decodeURIComponent(escape(N)) ^

URIError: URI malformed at decodeURIComponent (native) at a (/home/shenjianlin/js/code.js:42:6) at n (/home/shenjianlin/js/code.js:57:19) at Object.<anonymous> (/home/shenjianlin/js/code.js:64:13) at Module._compile (module.js:577:32) at Object.Module._extensions..js (module.js:586:10) at Module.load (module.js:494:32) at tryModuleLoad (module.js:453:12) at Function.Module._load (module.js:445:3) at Module.runMain (module.js:611:10)


4 回复

你应该好好学英语。


atob 换成这个
function atob(a) {
var b, c, e, d, f, g = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1];
d = a.length;
e = 0;
for (f = “”; e < d;) {
do b = g[a.charCodeAt(e++) & 255]; while (e < d && -1 == b);
if (-1 == b) break;
do c = g[a.charCodeAt(e++) & 255]; while (e < d && -1 == c);
if (-1 == c) break;
f += String.fromCharCode(b << 2 | (c & 48) >> 4);
do {
b = a.charCodeAt(e++) & 255;
if (61 == b) return f;
b = g[b]
} while (e < d && -1 == b);
if (-1 == b) break;
f += String.fromCharCode((c & 15) << 4 | (b & 60) >> 2);
do {
c = a.charCodeAt(e++) & 255;
if (61 == c) return f;
c = g[c]
} while (e < d && -1 == c);
if (-1 == c) break;
f += String.fromCharCode((b & 3) << 6 | c)
}
return f
}

已经解决,谢谢,主要原因是字符串太长,被隐藏了!

在 Node.js 中进行加密操作时遇到运行错误,可能的原因有多种,包括但不限于:加密算法错误、密钥格式不正确、加密数据格式问题等。下面是一个基本的加密示例,使用 Node.js 内置的 crypto 模块,并展示如何处理常见的错误。

首先,确保你已经安装了 Node.js,并创建了一个 JavaScript 文件(例如 encrypt.js)。

const crypto = require('crypto');

// 示例密钥和明文
const algorithm = 'aes-256-cbc';
const key = crypto.randomBytes(32);  // 32 字节密钥
const iv = crypto.randomBytes(16);   // 初始化向量
const plaintext = 'Hello, World!';

// 加密
const cipher = crypto.createCipheriv(algorithm, key, iv);
let encrypted = cipher.update(plaintext, 'utf8', 'hex');
encrypted += cipher.final('hex');

console.log('Encrypted:', encrypted);

// 解密(用于验证加密过程)
const decipher = crypto.createDecipheriv(algorithm, key, iv);
let decrypted = decipher.update(encrypted, 'hex', 'utf8');
decrypted += decipher.final('utf8');

console.log('Decrypted:', decrypted);

如果你遇到错误,请检查以下几点:

  1. 确保算法名称正确(如 'aes-256-cbc')。
  2. 密钥和初始化向量的长度是否符合算法要求。
  3. 加密和解密时使用相同的算法、密钥和初始化向量。

如果错误信息指向特定的行或函数,请提供详细的错误信息,以便进一步诊断问题。

回到顶部