C# 中的 RC4 128 位加密

2023-12-28

我需要执行 128 位 RC4 加密,我使用 .NET 和 C#。是否有内置函数可以执行此操作。

如果没有,我发现这个函数可以做到这一点:

public void RC4(ref Byte[] bytes, Byte[] key)
{
    Byte[] s = new Byte[256];
    Byte[] k = new Byte[256];
    Byte temp;
    int i, j;

    for (i = 0; i < 256; i++)
    {
        s[i] = (Byte)i;
        k[i] = key[i % key.GetLength(0)];
    }

    j = 0;
    for (i = 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 (int x = 0; x < bytes.GetLength(0); x++)
    {
        i = (i + 1) % 256;
        j = (j + s[i]) % 256;
        temp = s[i];
        s[i] = s[j];
        s[j] = temp;
        int t = (s[i] + s[j]) % 256;
        bytes[x] ^= s[t];
    }
}

但不知道是不是128位的,看起来是256的,但实在不知道有什么区别。


根据http://en.wikipedia.org/wiki/Rc4 http://en.wikipedia.org/wiki/Rc4RC4 算法的密钥长度可以在 1 ≤ 密钥长度 ≤ 256 范围内
这是一个可以确定密钥大小的示例:http://tofuculture.com/Blog/post/RC4-Encryption-in-C.aspx http://tofuculture.com/Blog/post/RC4-Encryption-in-C.aspx
下载源代码并查看 RC4.cs。

更新: 链接已失效。这是Archive.org 的快照 https://web.archive.org/web/20170425074523/http://tofuculture.com/Blog/post/RC4-Encryption-in-C.aspx.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 中的 RC4 128 位加密 的相关文章

随机推荐

  • 如何防止表格缩小到视口中

    我有以下代码 table border collapse collapse td padding 0px border 1px solid d3d3d3 width 300px height 100px text align center
  • Android导航组件清空堆栈

    我已导航至对话框片段 from 抽屉式导航连接到 NavController 但是 当我导航到已设置 popUpTo 和包含对话框片段的另一个目的地时 它不会清除堆栈 如何清除堆栈 AM 从 LogoutDialog 调用此方法 findN
  • 如何在 Android 中显示启动屏幕?

    我想在我的应用程序加载时显示启动屏幕 这是我的Java code ImageView splash ImageView this findViewById R id splashscreen splash postDelayed new R
  • Chrome - 注册表中的证书设置

    对于 Webdrivertest 我使用 Chrome 但始终会查询一个 SSL 证书 使用 Google Chrome 设置 无法处理它 所以我读到有一种关于注册表的方法 所以我尝试了各种组合 HKEY LOCAL MACHINE Sof
  • 如何将数据框中的每一列重新调整为 0-100 范围? (在 r 中)

    我试图让我的数据框的所有列都具有相同的比例 现在我有这样的东西 其中 a 处于 0 1 等级 b 处于 100 等级而 c 处于 1 5 等级 a b c 0 89 4 1 93 3 0 88 5 我怎样才能把它达到这样的100级 a b
  • 颤振设计曲线布局作为单个小部件

    Here https stackoverflow com questions 56820631 flutter design curves layout解决了有关设计此布局的问题 我在使用它时遇到问题 因为屏幕右侧的这条曲线不是小部件 当我
  • 错误“Junit 测试中没有公共 TestCase(String name) 或 TestCase()

    我是 junit test android 的初学者 我正在跟进本教程 http developer android com training activity testing activity basic testing html但得到这
  • 从 HTML5 文件 Api 加载的图像中检索 EXIF 图像元数据?

    我正在使用 HTML5文件 API 和文件读取器 http html5demos com file api HTML div div JS
  • 重复的 Apple APNS 推送通知?

    我们在应用程序上使用 APNS 一段时间以来没有发生太多事件 突然我们的用户报告多次收到相同的推送通知 我已经确认 乏味地 我们的服务器只向 Apple 发送一次通知有效负载 但通知会在横幅和通知中心生成 2 个 有时是 3 个 相同的警报
  • react-native-image-picker - 重建后的持久存储

    我已经在屏幕上敲击了一段时间了 尽管我在 git 或 stackoverflow 上找到了所有信息 但还是无法让它工作 我想要实现的目标 所选图像的持久性 来自库或相机 当我重建我的应用程序时 这意味着当我运行时也持久化react nati
  • IOS静态库产品一直是红色的

    我已经为此苦苦挣扎了几天 当我在 XCode 4 中的 IOS 下创建一个新的静态库项目时 我遇到了一个问题 无论是否添加文件作为标头或进行编译 我都能够成功构建 但 a 文件始终为红色 这种情况在调试和发布中都会发生 我读过类似的问题 但
  • Vue js 组合两个组件中的元素

    我正在尝试构建电子商务类型应用程序的结帐页面 在结账时 我有一个来自数据库的订单项目列表 每个订单项目都有价格 数量 您可以选择并组合这些 此外 我必须在其他地方呈现一个包含 插件 的列表到您的购物篮中 这也是 OrderItems 相同的
  • 如何在 Java 中实现抽象静态方法?

    关于无法包含静态抽象 Java 方法存在许多问题 还有很多关于此问题的解决方法 设计缺陷 设计强度 但我找不到任何针对我将很快说明的具体问题的信息 在我看来 创建 Java 的人以及相当多使用 Java 的人并不像我和其他许多人那样将静态方
  • Django DateTimeField() 和 timezone.now()

    好的 当我运行功能测试时出现奇怪的时区问题 Django 1 4 Python 2 7 MySQL 上的 DateTimeField 中的毫秒是否被截断 这是我唯一的理论 模型文件 from django db import models
  • 如何在android中使用opencv从另一帧中减去一帧

    我正在处理视频的帧 我想从其他帧中减去一帧以找出差异 但我不知道如何继续 我尝试将位图帧转换为垫子 然后减去它们 但它不起作用 我正在使用 opencv 2 4 3 作为 mat 函数 谁能告诉我该怎么做 如果可能的话用代码片段进行解释 我
  • 检查 PL/SQL 块中的表中是否存在行的正确方法

    昨天我在写一些任务 突然发现我真的不知道正确且被接受的方式当我使用 PL SQL 时检查表中是否存在行 例如 让我们使用表 PERSON ID Name 显然我can t do 除非有一些秘密方法 比如 BEGIN IF EXISTS SE
  • 将 pnputil 输出解析为特定类的已发布名称

    在 PowerShell 中 输入 pnputil exe e 后 我会得到如下驱动程序信息列表 我需要从列表中获取班级监视器的发布名称并将 oem8 inf 存储到 monitor name 我可以使用哪个命令来搜索class monit
  • gganimate 绘图未显示并保存一堆 .png

    我正在尝试复制一个简单的例子gganimate from here https gganimate com articles gganimate html 问题很简单ggplot部分工作正常 但是当我添加时transition states
  • Apple 未收到带有外国口音字符的推送通知

    我正在发送推送通知 当消息包含外来字符 在我的例子中是土耳其语 时 如 该消息不会到达设备 这是我的代码 message TH S is push passphrase mypass ctx stream context create st
  • C# 中的 RC4 128 位加密

    我需要执行 128 位 RC4 加密 我使用 NET 和 C 是否有内置函数可以执行此操作 如果没有 我发现这个函数可以做到这一点 public void RC4 ref Byte bytes Byte key Byte s new Byt