当前位置:首页 > JavaScript

rc4 js实现

2026-03-01 18:17:38JavaScript

RC4 算法简介

RC4(Rivest Cipher 4)是一种流加密算法,由 Ron Rivest 在 1987 年设计。它广泛应用于 SSL/TLS 和 WEP 等协议中。RC4 的核心是通过密钥调度算法(KSA)和伪随机生成算法(PRGA)生成密钥流,与明文进行异或操作实现加密或解密。

rc4 js实现

RC4 的 JavaScript 实现

以下是一个完整的 RC4 算法的 JavaScript 实现,包含密钥调度和伪随机生成两部分:

rc4 js实现

function rc4(key, str) {
    // 密钥调度算法(KSA)
    var s = [];
    for (var i = 0; i < 256; i++) {
        s[i] = i;
    }
    var j = 0;
    for (i = 0; i < 256; i++) {
        j = (j + s[i] + key.charCodeAt(i % key.length)) % 256;
        // 交换 s[i] 和 s[j]
        var temp = s[i];
        s[i] = s[j];
        s[j] = temp;
    }

    // 伪随机生成算法(PRGA)
    i = 0;
    j = 0;
    var result = '';
    for (var k = 0; k < str.length; k++) {
        i = (i + 1) % 256;
        j = (j + s[i]) % 256;
        // 交换 s[i] 和 s[j]
        var temp = s[i];
        s[i] = s[j];
        s[j] = temp;
        // 生成密钥流并异或
        var charCode = str.charCodeAt(k) ^ s[(s[i] + s[j]) % 256];
        result += String.fromCharCode(charCode);
    }
    return result;
}

使用方法

RC4 是对称加密算法,加密和解密使用相同的函数:

var key = 'secret-key';
var plaintext = 'Hello, RC4!';

// 加密
var ciphertext = rc4(key, plaintext);
console.log('Encrypted:', ciphertext);

// 解密
var decrypted = rc4(key, ciphertext);
console.log('Decrypted:', decrypted);

注意事项

  • RC4 密钥长度通常为 40-2048 位,但建议使用至少 128 位(16 字节)的密钥以提高安全性。
  • RC4 在现代密码学中已被认为不安全,不推荐用于高安全性场景。
  • 对于非 ASCII 字符(如中文),需确保字符串编码一致,或使用 Base64 编码处理二进制数据。

Base64 编码支持

如果需要处理二进制数据或非 ASCII 字符,可以结合 Base64 编码:

function rc4Base64(key, str, isEncrypt) {
    if (isEncrypt) {
        var encrypted = rc4(key, str);
        return btoa(encrypted);
    } else {
        var decoded = atob(str);
        return rc4(key, decoded);
    }
}

标签: js
分享给朋友:

相关文章

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js 实现页面刷新

js 实现页面刷新

使用 location.reload() location.reload() 是原生 JavaScript 提供的页面刷新方法。调用该方法会重新加载当前页面,相当于点击浏览器的刷新按钮。 // 基本…

js 实现全屏

js 实现全屏

使用 requestFullscreen 方法 通过调用元素的 requestFullscreen 方法可以实现全屏。该方法兼容现代浏览器,但不同浏览器可能需要前缀。 const element =…