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

安全基础学习-RC4加密算法

这里仅仅记录一些基础的概念。后期有需求进一步扩展。

RC4 是一种对称流加密算法,由罗恩·里维斯特(Ron Rivest)于1987年设计。RC4 的设计目的是提供一种简单且高效的加密方法。尽管 RC4 曾经广泛使用,但它的安全性在现代已受到质疑。

1、基本概念

  • 对称加密:RC4 使用相同的密钥进行加密和解密。
  • 流加密:RC4 将明文逐字节地与伪随机生成的字节流进行异或操作来生成密文。

2、工作流程

2.1密钥调度算法 (Key Scheduling Algorithm, KSA):

  • 初始化一个长度为256的数组 S,数组的元素为0到255。S[i] = i
  • 使用密钥对数组 S 进行打乱。密钥可以是任意长度的字节串。
  • 打乱过程涉及到遍历 S 数组,并根据密钥对 S 进行交换操作。

2.2 伪随机数生成算法 (Pseudo-Random Generation Algorithm, PRGA):

  • 从初始化后的 S 数组生成伪随机字节流。
  • 生成的伪随机流用于与明文进行异或操作,从而生成密文。

3、详细步骤

3.1 密钥调度算法 (KSA):

  • 初始化数组 S:
    S[i] = i (for i = 0 to 255)
    
  • 初始化变量 j = 0。
  • 对数组 S 进行打乱:
    for i = 0 to 255j = (j + S[i] + K[i % 密钥长度]) % 256swap S[i] with S[j]```
    

3.2 伪随机数生成算法 (PRGA):

  • 初始化变量 i = 0 和 j = 0。
  • 生成伪随机字节流:
    i = (i + 1) % 256
    j = (j + S[i]) % 256
    swap S[i] with S[j]
    K = S[(S[i] + S[j]) % 256]
    
  • 使用 K 对明文进行异或操作生成密文。

3.4 加密与解密

加密和解密过程使用相同的步骤,因为 RC4 是对称加密算法。通过伪随机字节流的异或操作,明文可以加密成密文,密文可以解密回明文。

示例

假设密钥是 0x01 0x02 0x03 0x04,明文是 0x10 0x20 0x30

  1. 使用密钥初始化数组 S。
  2. 生成伪随机字节流,例如 0xAB 0xCD 0xEF。
  3. 明文与伪随机字节流异或,得到密文 0xA9 0xED 0xDF。
  4. 通过相同的伪随机字节流,密文 0xA9 0xED 0xDF 经过异或操作恢复明文 0x10 0x20 0x30。

4、总结

  • 密钥调度算法 (KSA):用密钥打乱一个初始数组。
  • 伪随机数生成算法 (PRGA):使用打乱后的数组生成伪随机字节流。
  • 加密/解密:将明文与伪随机字节流异或生成密文,反过来也是一样的。

RC4因其简单性和高效性被广泛使用,但其安全性在现代已经不再被推荐,尤其是当密钥长度不足或者使用不当时,可能会导致加密被破解。

在这里插入图片描述

5、python实现

def rc4_ksa(key):"""密钥调度算法 (Key Scheduling Algorithm, KSA)"""key_length = len(key)S = list(range(256))j = 0for i in range(256):j = (j + S[i] + key[i % key_length]) % 256S[i], S[j] = S[j], S[i]  # 交换 S[i] 和 S[j]return Sdef rc4_prga(S, data_length):"""伪随机数生成算法 (Pseudo-Random Generation Algorithm, PRGA)"""i = 0j = 0key_stream = []for _ in range(data_length):i = (i + 1) % 256j = (j + S[i]) % 256S[i], S[j] = S[j], S[i]  # 交换 S[i] 和 S[j]K = S[(S[i] + S[j]) % 256]key_stream.append(K)return key_streamdef rc4_encrypt_decrypt(key, data):"""RC4 加密和解密"""S = rc4_ksa(key)key_stream = rc4_prga(S, len(data))return bytes([data[i] ^ key_stream[i] for i in range(len(data))])# 示例用法
if __name__ == "__main__":key = bytes([1, 2, 3, 4])  # 密钥plaintext = bytes([16, 32, 48])  # 明文# 加密ciphertext = rc4_encrypt_decrypt(key, plaintext)print("Ciphertext:", ciphertext)# 解密decrypted_plaintext = rc4_encrypt_decrypt(key, ciphertext)print("Decrypted Plaintext:", decrypted_plaintext)

参考资料

参考链接1

相关文章:

安全基础学习-RC4加密算法

这里仅仅记录一些基础的概念。后期有需求进一步扩展。 RC4 是一种对称流加密算法,由罗恩里维斯特(Ron Rivest)于1987年设计。RC4 的设计目的是提供一种简单且高效的加密方法。尽管 RC4 曾经广泛使用,但它的安全性在现代已受到质疑…...

雨云宁波电信大带宽服务器测评(非广告)

提示:本文非广告,非宣传! 本文长期更新地址:雨云宁波电信大带宽服务器测评(非广告) 雨云现在有一个国内的新区——宁波 宣传的是电信大带宽,可附加100G防御,采用NVME,和铂…...

2024年,最新前端趋势

随着技术的不断发展,前端开发领域在2024年迎来了新的趋势和挑战。对于开发者来说,紧跟这些趋势不仅能提升技术水平,还能在激烈的市场竞争中脱颖而出。今天,我想向大家介绍一款在这波趋势中脱颖而出的开发神器——MemFire Cloud。这…...

Linux静态进程和动态进程查看管理

1.静态进程的查看PS PPID:谁启动的父亲ID USER:运行进程的用户名称 PID:进程ID %CPU:CPU的占用比例占用资源 %MEM:内存使用的占用比例 VSZ:占用虚拟内存多少 RSS:占用实际内存多少 TTY:…...

CPU飙升 怎么定位问题

传统的方法 【top】 查看所有进程占系统CPU的排序,定位是哪个进程搞的鬼。PID那一列就是进程号。 【top -Hp pid】 定位进程中使用 CPU 最高的线程tid 【printf ‘0x%x’ tid】 线程 tid 转化 16 进制,例如printf ‘0x%x’ 11882 得到16进制的 0x2e6a 【jstack…...

The Sandbox 游戏制作教程第 4 章|使用装备制作游戏,触发独特互动

欢迎回到我们的系列,我们将记录 The Sandbox Game Maker 的 “On-Equip”(装备)功能的多种用途。 如果你刚加入 The Sandbox,On-Equip 功能是 “可收集组件”(Collectable Component)中的一个多功能工具&a…...

JS 和 JSX、TS 和 TSX 的区别

1. JS(JavaScript) 定义与特性: JavaScript(简称JS)是一种轻量级、解释型或即时编译型的编程语言。它基于原型编程、多范式的动态脚本语言,支持面向对象、命令式、声明式、函数式编程范式。JavaScript 是…...

25款极氪007上市,小米SU7就不该买?

文 | AUTO芯球 作者 | 谦行 我是刚刚才知道 买小米SU7的原来是盯着他这两个功能 可爱的小女孩喊小爱同学帮她停个车 妈妈给她说SU7自己能停好,她还叮嘱一句“小爱同学你给我好好停” SU7滴溜溜的就停在车位上,全程不到一分钟 视频属实温馨&#x…...

旋转字符串 | LeetCode-796 | 模拟 | KMP | 字符串匹配

🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 🕹️KMP算法练习题 LeetCode链接:796. 旋转字符串 文章目录 1.题目描述🍑2.题解🫐2.1 暴力解法🫒2.2 模拟…...

网络安全测试工具Burp Suite基本使用

一、介绍 Burp Suite 是一款由 PortSwigger 开发的集成网络安全测试工具,广泛用于渗透测试和漏洞扫描。它提供了一系列功能强大的工具和功能,帮助安全研究人员和渗透测试人员识别和修复 Web 应用程序中的安全漏洞。以下是 Burp Suite 的主要功能和特点&…...

使用pytest+selenium编写网页UI自动化脚本和用例

1 UI自动化测试 UI自动化测试(User Interface Automation Testing)是一种通过编写脚本或使用自动化测试工具,对界面(UI)进行自动化测试的方法。原理主要是模拟用户打开客户端或网页的UI界面,自动化执行用户…...

新能源遇“秋老虎”,8月第二周销量集体下滑,问界惨遭腰斩

文/王俣祺 导语:随着日前7月份乘用车销量的公布,我们发现7月并没有因6月各车企的“冲量”行为迎来反噬,对于这种“淡季不淡”的现象市场上一片看好。但从近日公布的8月销量数据来看,人们对于“秋老虎”的恐怖可以说是一无所知。随…...

SEO模板网站的wordpress主题最适合google外贸SEO

在寻找最适合Google外贸SEO的WordPress主题时,有几个关键因素需要考虑:速度、SEO友好性、多语言支持、以及是否易于定制。以下是一些推荐的WordPress主题,它们不仅速度快,而且对SEO非常友好,非常适合外贸网站&#xff…...

fetch跨域请求数据的前端设置和后端php的header设置

跨源请求,也称为CORS(Cross-Origin Resource Sharing)请求,是Web开发中常见的一种需求,允许一个网页的JavaScript代码向与该网页不同源的服务器发出HTTP请求。以下是使用JavaScript中的fetch函数进行跨源请求的一个基本…...

Ted靶机

信息收集: 靶机地址:https://www.vulnhub.com/entry/ted-1,327/ (1)ip扫描 nmap 192.168.254.0/24 -sn | grep -B 2 00:0C:29:FF:7F:9A (2)端口扫描 nmap -p- -A 192.168.254.159 (3&#x…...

HarmonyOS ArkTS 构建布局

在 HarmonyOS 中,ArkTS 是一种基于 TypeScript 的编程语言,专为开发 HarmonyOS 应用而设计。构建布局是开发应用的关键步骤之一。以下是如何在 ArkTS 中构建布局的基本指南。 1. 创建项目和页面 首先,确保已经创建了一个 HarmonyOS 项目。如…...

yolov5详解(二):通过yaml文件构建完整模型

依然拿yolov5l v6.0版本来讲解 1. yaml文件 以下是yolov5l.yaml文件内容 # YOLOv5 🚀 by Ultralytics, GPL-3.0 license# Parameters nc: 80 # number of classes depth_multiple: 1.0 # model depth multiple width_multiple: 1.0 # layer channel multiple …...

8月8日学习笔记 python基础

1.环境 python2, python3 yum list installed|grep python yum -y install python3 # 最新安装3.12可以使⽤源码安装,教程是在第⼀个星期pdf python3 --version 3.6.8 #进⼊到python的编辑状态 python3 # 如果直接输⼊python,也会进⼊到pyth…...

电动自行车出海黑马Avento独立站拆解(上)丨出海笔记

这次我们来拆解一个电动自行车的独立站 为什么选电动自行车? 因为全球疫情,带来出行问题——避免聚集,大家都减少了公共交通工具,而改为自行车,电动自行车...... 君不见疫情之后无论是出行自行车,还是健…...

Gerrit 使用教程

一、Gerrit简介 Gerrit,一种开放源代码的代码审查软件,使用网页界面。利用网页浏览器,同一个团队的程序员,可以相互审阅彼此修改后的代码,决定是否能够提交,退回或是继续修改。它使用版本控制系统Git作为底…...

用Qwen3-Embedding-0.6B做文本分类:实战教程与代码分享

用Qwen3-Embedding-0.6B做文本分类:实战教程与代码分享 1. 引言 文本分类是自然语言处理中最基础也最实用的任务之一。无论是新闻分类、情感分析,还是垃圾邮件识别,都需要将文本准确地归入预定义的类别。传统的文本分类方法依赖人工特征工程…...

日报 | Anthropic发RSP 2.0;DeepSeek V4将至;Claude史诗宕机;Mythos被关

头条:Anthropic发布负责任扩展政策2.0,AI安全治理进入新阶段 炸了!Anthropic刚刚更新了他们的"负责任扩展政策"(RSP),这可是AI安全领域的大事。 重点来了:这次更新引入了更灵活的风险…...

家庭NAS搭建避坑指南:从硬件选购到TrueNAS配置的全流程心得

家庭NAS搭建实战:从零避坑到高效配置的全方位指南 为什么你需要一台家庭NAS? 记得三年前那次硬盘突然崩溃的经历吗?我丢失了孩子出生以来的所有照片和视频,那种懊悔至今难忘。正是这次教训让我意识到,家庭数据存储不能…...

从抓包到洞察:Wireshark实战解析HTTP协议核心交互

1. 为什么我们需要抓包分析HTTP协议 刚开始接触网络协议分析时,很多人都会有这样的疑问:为什么非要大费周章地抓包?直接看文档不行吗?这个问题我也曾经困惑过,直到第一次用Wireshark亲眼看到真实的HTTP报文在眼前流动&…...

5个让老旧电脑也能流畅运行碧蓝航线自动脚本的优化技巧

5个让老旧电脑也能流畅运行碧蓝航线自动脚本的优化技巧 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 还在为老旧电脑运行A…...

C# 13不安全代码审计清单:7项Roslyn Analyzer新规+4类CI/CD拦截阈值配置(附GHA自动化检测脚本)

第一章:C# 13不安全代码管控配置概览C# 13延续了对内存安全的高度重视,在默认启用/unsafe-(即禁用不安全上下文)的前提下,将不安全代码的启用明确纳入项目级显式管控范畴。开发者必须主动声明许可,并通过多…...

华人双雄改变数据库一体机历史:一个巧用“细胞”系统,一个让Teradata拿到早期融资

数据库机设想的最早提出者是丹尼尔斯洛特尼克(Daniel Slotnick)1。而真正将数据库机推进到完整设计阶段的是两位华人学者——苏岳威(Stanley Y. W. Su)和萧开美(David K. Hsiao)。 01.最初构想:…...

Qwen3-ASR-1.7B安防应用:语音监控智能分析系统

Qwen3-ASR-1.7B安防应用:语音监控智能分析系统 1. 引言 想象一下这样的场景:一个大型商场里,监控摄像头捕捉到了异常情况,但保安人员需要同时盯着几十个屏幕,很难第一时间发现所有问题。或者在一个工厂车间里&#x…...

前端设计融合:忍者像素绘卷:天界画坊生成UI/UX素材实战

前端设计融合:忍者像素绘卷:天界画坊生成UI/UX素材实战 1. 像素艺术在前端设计中的独特价值 像素艺术作为一种复古又现代的设计风格,近年来在前端设计领域重新焕发生机。不同于传统设计工具需要手动绘制每个像素点,忍者像素绘卷…...

3. 函数新增了哪些扩展?

一、先给一个面试开场思路如果面试官问:ES6 对函数新增了哪些扩展?不要一上来就堆概念。 比较好的回答方式是先分类:ES6 对函数的扩展,我一般会从 参数、作用域、函数写法、this 绑定、尾调用、函数名、rest/spread 这几个方面来说…...