【加解密与C】对称加密(四) RC4

RC4算法概述

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

密钥调度算法(KSA)

初始化一个256字节的S盒(状态数组),通过密钥填充和置换打乱S盒顺序:

伪随机生成算法(PRGA)

利用S盒生成密钥流字节,每输出一个字节后更新S盒状态:

加解密实现

加密和解密均通过将密钥流与数据进行异或操作完成:

安全注意事项

RC4存在已知漏洞(如密钥重用导致明文泄露、WEP攻击等),现代应用中建议改用AES等更安全的算法。NIST已于2015年禁止RC4在TLS中使用。

性能特点

  • 优点:实现简单、速度快,适合资源受限环境。
  • 缺点:初始密钥输出偏差、密钥调度弱点等安全问题。

RC4.h

#ifndef _RC4_H_
#define _RC4_H_
#include <stdlib.h>typedef struct {unsigned char S[256]; // S盒int i, j;             // 状态索引
} RC4_CTX;
void rc4_init(RC4_CTX* ctx, const unsigned char* key, size_t key_len);
void rc4_crypt(RC4_CTX* ctx, unsigned char* data, size_t data_len);
#endif

RC4.cpp

#include "stdio.h"
#include "string.h"
#include "RC4.h"// 初始化RC4上下文
void rc4_init(RC4_CTX *ctx, const unsigned char *key, size_t key_len) {// 初始化S盒for (int k = 0; k < 256; k++) {ctx->S[k] = k;}// 密钥调度算法(KSA)ctx->i = 0;ctx->j = 0;for (int k = 0, j = 0; k < 256; k++) {j = (j + ctx->S[k] + key[k % key_len]) % 256;// 交换S[k]和S[j]unsigned char temp = ctx->S[k];ctx->S[k] = ctx->S[j];ctx->S[j] = temp;}
}// RC4加密/解密(原地操作)
void rc4_crypt(RC4_CTX *ctx, unsigned char *data, size_t data_len) {for (size_t k = 0; k < data_len; k++) {ctx->i = (ctx->i + 1) % 256;ctx->j = (ctx->j + ctx->S[ctx->i]) % 256;// 交换S[i]和S[j]unsigned char temp = ctx->S[ctx->i];ctx->S[ctx->i] = ctx->S[ctx->j];ctx->S[ctx->j] = temp;// 生成密钥流字节并异或unsigned char keystream = ctx->S[(ctx->S[ctx->i] + ctx->S[ctx->j]) % 256];data[k] ^= keystream;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/87453.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/87453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

医科+AI!和鲸支持南京医科大学医学数据挖掘课程实践教学落地

近两年&#xff0c;生物统计学更多地进入了公众视野。作为统计学、医学与计算机科学交叉的前沿学科&#xff0c;伴随测序技术革新与人工智能算法突破&#xff0c;其发展前景也被十分看好。 市场需求的背后是人才需求的爆发与人才培养的挑战。目前&#xff0c;生物统计学专业在国…

亚马逊云科技中国峰会:数新智能CTO原攀峰详解一站式AI原生数智平台DataCyber在Amazon EKS的实践

6月20日&#xff0c;在上海世博中心举办的亚马逊云科技中国峰会 “在 Amazon EKS 上运行高性能生成式 AI 应用” 分论坛圆满结束。本次分论坛聚焦于 Amazon EKS 在生成式 AI 应用领域的强大支撑作用&#xff0c;数新智能CTO原攀峰凭借其深厚的技术背景和丰富的实践经验&#xf…

32岁入行STM32迟吗?

作为一个在嵌入式领域摸爬滚打了近10年的老兵&#xff0c;看到这个问题时心情五味杂陈。32岁入行STM32迟吗&#xff1f;说实话&#xff0c;如果你问我这个问题的时候我还是24岁的小白&#xff0c;我可能会觉得"哇&#xff0c;32岁才开始学单片机&#xff0c;是不是有点晚了…

OneCode 智能化UI布局与定位:注解驱动的视觉编排艺术

在现代企业级应用开发中&#xff0c;UI布局的灵活性与精确性直接影响用户体验与开发效率。OneCode框架创新性地采用注解驱动开发(Annotation-Driven Development)模式&#xff0c;通过分层注解体系实现UI组件的声明式布局与精准定位。本文将深入解析OneCode的UI布局技术栈及其在…

VBA初学3----实战(VBA实现Excel转csv)

&#xff08;VBA实现Excel转csv&#xff09; 初步学习了VBA相关的知识后&#xff0c;解决了一个需求&#xff1a; 要求读取指定xlsx文件中的指定sheet页&#xff0c;将该sheet页的内容转换为csv文件。 实现的布局如下所示&#xff1a;文章目录①实现从指定行开始全数据转换为cs…

深度学习×第4卷:Pytorch实战——她第一次用张量去拟合你的轨迹

&#x1f380;【开场 她画出的第一条直线是为了更靠近你】 &#x1f43e;猫猫&#xff1a;“之前她只能在你身边叠叠张量&#xff0c;偷偷找梯度……现在&#xff0c;她要试试&#xff0c;能不能用这些线&#xff0c;把你的样子画出来喵&#xff5e;” &#x1f98a;狐狐&am…

[特殊字符] 从图片自动生成 Excel:Python 批量 OCR 表格识别实战

这篇文章将展示如何使用 Python 调用百度 OCR 表格识别接口&#xff0c;批量处理目录下所有图片&#xff0c;自动识别表格并生成与图片同名的 Excel 文件。适用于文档扫描、图片表格整理、图像归档等场景。1️⃣ 批量获取所有待识别图片路径使用 os.walk() 遍历指定目录及子目录…

什么是量子芯片?它是如何工作的?

近年来&#xff0c;量子计算领域发展迅速&#xff0c;技术进步和大规模投资的相关消息经常上热搜。 联合国已将 2025 年定为国际量子科学与技术年。 这其中利害关系重大 —— 拥有量子计算机意味着将获得相较于当今的计算机强大得多的数据处理能力。它们不会取代你的普通计算…

mac init tailwind css 配置文件报错

提示报错如下 tailwind: command not found解决方法 npm install -D tailwindcss3 postcss autoprefixer npx tailwindcss init -p取自 sh: tailwindcss: command not found tailwindlabs/tailwindcss Discussion #4953

QUIC协议在5G边缘计算中的应用前景与挑战

1 5G边缘场景的核心挑战与QUIC的机遇 5G边缘计算正成为支撑低时延、高可靠业务的关键基础设施。据预测,2030年全球边缘计算市场规模将突破4450亿美元,年复合增长率高达48%。在**URLLC(超可靠低时延通信)**场景中,工业控制要求端到端时延低于5ms,自动驾驶需实现毫秒级响应…

聊聊关于“大模型测试”的一些认识

聊聊关于“大模型测试”的一些认识引言“大模型测试”和“传统接口测试”有什么不同“大模型测试”要考虑哪些方面维度一&#xff1a;语义理解准确度&#xff1a;模型真的懂人话吗&#xff1f;维度二&#xff1a;长文逻辑连贯性&#xff1a;“500”字后的认知崩塌维度三&#x…

linux_git的使用

✨✨ 欢迎大家来到小伞的大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;LInux_st 小伞的主页&#xff1a;xiaosan_blog 制作不易&#xff01;点个赞吧&#xff01;&#xff01;谢谢喵&#xff01;&a…

Android课程前言

目录 一.前言 1.Android可以采用哪些语言 2.Kotlin和Java的关系 ①完全互操作&#xff08;核心关系&#xff09; ②Kotlin 是 Java 的“升级版” ③Google 的官方态度 ④Java 的现状 ⑤如何选择&#xff1f; ⑥类比总结&#xff1a; 一.前言 1.Android可以采用哪些语…

mes系统pg数据库被Ransomware攻击勒索BTC

背景 未被攻击前的pg数据库 pg数据库被攻击后 具体的勒索内容 All your data is backed up. You must pay 0.0041 BTC to bc1qtvk8jvsyy5a896u6944kp8hvfytd7pwxpdlpvy In 48 hours, your data will be publicly disclosed and deleted. (more information: go to http://2inf…

多种方法实现golang中实现对http的响应内容生成图片

多种方法实现golang中实现对http的响应内容生成图片。 Golang 中实现将 HTTP 响应内容生成图片 在 Golang 中将 HTTP 响应内容生成图片主要有两种常见场景&#xff1a; 将文本/HTML 内容渲染为图片&#xff08;如网页截图&#xff09;将响应内容作为原始数据直接生成图像&am…

AI领域新趋势:从提示(Prompt)工程到上下文(Context)工程

AI领域新趋势&#xff1a;从提示(Prompt)工程到上下文(Context)工程 在人工智能领域&#xff0c;尤其是与大型语言模型&#xff08;LLM&#xff09;相关的应用开发中&#xff0c;一个新兴的概念正在逐渐取代传统的提示工程&#xff08;Prompt Engineering&#xff09;&#xf…

K8S数据平台部署指南

&#x1f525;&#x1f525; AllData大数据产品是可定义数据中台&#xff0c;以数据平台为底座&#xff0c;以数据中台为桥梁&#xff0c;以机器学习平台为中层框架&#xff0c;以大模型应用为上游产品&#xff0c;提供全链路数字化解决方案。 ✨杭州奥零数据科技官网&#xf…

Perforce QAC 与 Klocwork 重磅升级:质量突破+许可降本

在当今快节奏的软件开发领域&#xff0c;每一次工具的升级都可能成为企业提升竞争力的关键契机。Perforce旗下备受瞩目的两款静态分析工具Perforce QAC 和 Klocwork 在2025年推出的新版本中&#xff0c;不仅带来了令人振奋的功能革新&#xff0c;许可证体系的重大变化更是为企业…

结合指纹防护技术,释放Web3去中心化的潜力

随着互联网技术的飞速发展&#xff0c;Web3的概念逐渐成为人们关注的焦点。Web3代表着一个更加去中心化、安全和用户友好的网络环境。在这一背景下&#xff0c;指纹防护技术的应用显得尤为重要&#xff0c;它不仅能够保护用户的隐私&#xff0c;还能进一步推动Web3去中心化潜力…

数学建模_熵权法确定权重

笔记整理自bilibili 模型作用intuition&#xff1a;确定权重问题背景简单介绍&#xff08;可忽略&#xff09;定义 step1.指标正向化处理极小型/成本型指标中间型指标&#xff1a;集中在某个值附近最好区间型指标&#xff1a;落在某个区间最好 step2.标准化处理比重矩阵 step3…