【加解密與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
英文地址,請注明出處:http://en.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…