node.js rc4加密/解密 不好用怎么办?

nodejs 15版本 以上,核心库就没有rc4加密了,三方库也各种问题,自己实现了一个方便今后使用。

加密解密都是这一个方法,RC4为对称加密,传入加密的内容就解密了,传入没加密的内容就自动加密了。

复制代码
   function rc4(data, key) {
        if (typeof key != 'string') {
            return null;
        }
        if (!Buffer.isBuffer(data)) {
            if (typeof data == 'string') {
                data = Buffer.from(data, 'utf-8');
            } else {
                return null;
            }
        }
        key = Buffer.from(key);
        var s = new Array(256);
        var k = new Array(256);
        var output = [];
        var i, j, temp;
        for (i = 0; i < 256; i++) {
            s[i] = i;
            k[i] = key[i % key.length];
        }
        for (i = j = 0; i < 256; i++) {
            j = (j + s[i] + k[i]) % 256;
            temp = s[i];
            s[i] = s[j];
            s[j] = temp;
        }
        i = j = 0;
        for (var n = 0; n < data.length; n++) {
            i = (i + 1) % 256;
            j = (j + s[i]) % 256;
            temp = s[i];
            s[i] = s[j];
            s[j] = temp;
            output.push(data[n] ^ s[(s[i] + s[j]) % 256]);
        }
        return Buffer.from(output);
    },

补充以下,如果发现加密和其他语言的不一样,可以看下传入的data key,他们本质上就是一个数组,但是文本转换数组的过程有很多,比如直接取字节码,直接到char[],数组不同导致加解密的结果不同。

相关推荐
用户47949283569151 分钟前
你知道node背后的libuv是什么吗
node.js
pixle04 小时前
从零学习Node.js框架Koa 【一】 Koa 初探从环境搭建到第一个应用程序
前端·node.js·web·koa.js·web全栈·node服务端框架
Moment5 小时前
为什么我们从 Python 迁移到 Node.js
前端·后端·node.js
冴羽17 小时前
为什么在 JavaScript 中 NaN !== NaN?背后藏着 40 年的技术故事
前端·javascript·node.js
IT古董19 小时前
全面理解 Corepack:Node.js 的包管理新时代
前端·node.js·corepack
Jonathan Star19 小时前
NestJS 是基于 Node.js 的渐进式后端框架,核心特点包括 **依赖注入、模块化架构、装饰器驱动、TypeScript 优先、与主流工具集成** 等
开发语言·javascript·node.js
学习3人组19 小时前
清晰地说明 NVM、NPM 和 NRM 在 Node.js 开发过程中的作用
前端·npm·node.js
qq_4152162519 小时前
Vue3+vant4+Webpack+yarn项目创建+vant4使用注意明细
前端·webpack·node.js
Java 码农21 小时前
nodejs + koa-generator 创建后端项目
node.js
用户47949283569151 天前
都说node.js是事件驱动的,什么是事件驱动?
前端·node.js