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[],数组不同导致加解密的结果不同。

相关推荐
毕设源码-朱学姐1 天前
【开题答辩全过程】以 基于Node.js的书籍分享平台设计与实现为例,包含答辩的问题和答案
node.js
前端 贾公子1 天前
Node.js 如何处理 ES6 模块
前端·node.js·es6
周杰伦的稻香1 天前
Hexo搭建教程
java·node.js
毕设源码-钟学长1 天前
【开题答辩全过程】以 基于node.js vue的点餐系统的设计与实现为例,包含答辩的问题和答案
前端·vue.js·node.js
朝朝暮暮an2 天前
Day 2|Node.js 运行机制、模块系统与异步初探
node.js
aidou13142 天前
Visual Studio Code(VS Code)安装步骤
vscode·npm·node.js·环境变量
止观止2 天前
告别 require!TypeScript 5.9 与 Node.js 20+ 的 ESM 互操作指南
javascript·typescript·node.js
一只专注api接口开发的技术猿2 天前
淘宝商品详情API的流量控制与熔断机制:保障系统稳定性的后端设计
大数据·数据结构·数据库·架构·node.js
天远数科2 天前
天远车辆过户查询API集成指南:Node.js 全栈视角下的二手车数据挖掘
大数据·数据挖掘·node.js·vim
全栈小52 天前
【前端】win11操作系统安装完最新版本的NodeJs运行npm install报错,提示在此系统上禁止运行脚本
前端·npm·node.js