当前位置: 首页 > news >正文

rc4算法简单介绍及实现

0. 介绍

RC4是一种流密码,但因为安全性问题已经被弃用。

1. 算法描述

1.1 初始化

Key为生成的随机密钥:1-256B
S为一数组:256B
T为辅助数组:keylenB

for (int i = 0;i < 256;i++) {
    S[i] = i;
    T[i] = S[i % keylen];
}
1.2 初始化排列

通过下面的过程来,初始化排列S

int j = 0;
for (int i = 0;i < 256;i++) {
    j = (j + S[i] + key[i%key_len]) % 256;
    
    int tmp = S[i];
    S[i]    = S[j];
    S[j]    = tmp;
}
1.3 流生成

生成好排列后,就可以根据排列,重复生成key进行加解密操作了。

int i = 0;
int j = 0;


for (int k = 0;k < str_len; k++) {
    i = (i + 1) % 256;
    j = (j + S[i]) % 256;

    int tmp = S[i];
    S[i] = S[j];
    S[j] = tmp;

    int t = (S[i] + S[j]) % 256;
    str[k] ^= S[t];
}

3. 代码

实现见ltnotfty-gitee

参考

william stallings
manojpandey-rc4

相关文章:

  • 堆(Heap)和栈(Stack),这两者通常是指内存管理中两种不同的内存区域
  • Docker系列——从零开始打包FunASR的Http服务
  • PECL(Positive Emitter-Coupled Logic)电平详解
  • 我的世界1.20.1forge开发进阶教程——生物AI(1)
  • ctfshow-xxs-316-333-wp
  • 酒店宾馆IPTV数字电视系统:创新宾客体验,引领智慧服务新潮流
  • SpringCloud系列教程(十四):Sentinel持久化
  • 自动化测试:PO模式
  • DaVinci Resolve(达芬奇)快捷键大全
  • windows 启用linux子系统不必再装双系统
  • 剑指 Offer II 086. 分割回文子字符串
  • 力扣665. 非递减数列 475.供暖屋
  • Windows功能之FTP服务器搭建
  • orm bee/Orm bee/Orm Bee (CSDN还区分大小写)
  • IMX6ULL学习整理篇——Linux驱动开发的基础2 老框架的一次实战:LED驱动
  • IPoIB驱动中RSS与TSS技术的深度解析:多队列机制与性能优化
  • 用Python实现一个简单的猜数字游戏
  • ELK+Filebeat+Kafka+Zookeeper安装部署
  • UBuntu24.04-JDK7-TOMCAT7安装
  • Vue 过滤器深度解析与应用实践
  • 代理销售保险存在误导行为,农业银行重庆市分行相关负责人被罚款0.1万元
  • 一周文化讲座|城市移民与数字时代的新工作
  • 身临其境感受伟人思想力量,“马克思书房”在上海社科馆揭幕
  • 司法部谈民营经济促进法:对违规异地执法问题作出禁止性规定
  • 吴勇强、高颜已任南京市委常委
  • 牛市早报|央行宣布降准降息,公募基金改革最新方案落地