密码学_RC4算法

news2024/11/16 3:43:46

        在密码学中,RC4(来自Rivest Cipher 4的缩写)是一种流加密算法,密钥长度可变。它加解密使用相同的密钥,因此也属于对称加密算法。RC4是有线等效加密(WEP)中采用的加密算法,也曾经是TLS可采用的算法之一,极其容易被破解

摘自百度百科

第一步:初始化S表(一共256个字节,从S[0]-S[255])

        S[0]=0,S[1]=1,S[2]=2...S[255]=255

第二步:将输入的种子密钥1放入K表,K表也是256字节的大小,用K表填充T表

如果输入长度小于256个字节,则进行轮转,直到填满T表

例如输入密钥的是2,3,4,5   ,  那么填入的是2,3,4,5,2,3,4,5,2,3,4,5........

由上述轮转过程得到256个字节的表T(用来作为密钥流生成的种子密钥2

第三步:开始对S表进行置换操作(用来打乱初始种子密钥1)

从第零个字节开始,执行256次,保证每个字节都得到处理

 j = 0;

  for (i = 0 ; i < 256 ; i++){

    j = (j + S[i] + T[i]) mod 256;

    swap(S[i] , S[j]);

  }

第四步:秘钥流的生成与加密

DataLen=1024 #假设明文长度为1024

i=0;

j=0;

while(DataLen--){     

   i = (i + 1) mod 256;

    j = (j + S[i]) mod 256;

    swap(S[i] , S[j]);

    t = (S[i] + S[j]) mod 256;

    key_str= S[t];这里的key_str[k] 就是当前生成的一个秘钥流(也叫伪随机数)

    data[]=data[]^key_str; #不断和明文进行异或

                                                    #也可以先将密钥流保存在数组中,最后统一异或

}

到此为止,加密完成,解密的话就将密文和密钥流异或就得到明文了。

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

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

相关文章

电脑看不了视频?视频恢复,3个方案解决

一般电脑播放不了视频&#xff0c;原因大多是Flash插件损坏了&#xff0c;因为电脑上的视频和所有的Flash都需要Flash插件才可以正常使用。电脑看不了视频怎么办&#xff1f;你需要对Flash进行修复或者重新安装它。一起来看看下面三个方案&#xff0c;解决电脑视频看不了的问题…

传输系统WSON倒换时的路由震荡问题【脱敏版】

【摘要】在省干传输OXC系统中使用WSON倒换时&#xff0c;测试过程中发现WSON倒换时存在电路频繁up down的现象&#xff0c;研究发现倒换时光信道建立时间过程中光信号不是一个稳定的状态&#xff0c;设备的色散补偿模块会在这个不稳态下出现异常&#xff0c;导致色散补偿模块不…

2023,出海企业,数据跨境传输如何实现合规?

随着防疫政策的优化&#xff0c;2023年出海企业开始加速海外业务&#xff0c;此前&#xff0c;浙江、四川、广东、江苏等地政府都纷纷出手“包机出海抢订单“。而伴随着企业的全球业务拓展&#xff0c;数据跨境活动日益频繁&#xff0c;跨境数据的安全风险也日益凸显&#xff0…

通过反射机制调用方法

package com.javase.reflect;import com.javase.service.UserService;import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ResourceBundle;/*** 通过反射机制调用方法&#xff08;必须掌握&#xff0c;五颗星*****&#…

小程序开发经验分享(2)前端开发

一、开发前的准备 开发环境:微信推出的官方开发工具。 申请 Appid :相关公司或个人申请到 Appid 后可以进行真机的调试和预览,否则只能在开发工具里进行调试。 备案域名和证书:微信小程序仅支持 https 协议,所以务必绑定含有证书的域名,才能在正式上线后进行使用。 二…

jumpserver源码包安装

cd /opt wget https://github.com/jumpserver/installer/releases/download/v2.20.1/jumpserver-installer-v2.20.1.tar.gz tar -xf jumpserver-installer-v2.20.1.tar.gz cd jumpserver-installer-v2.20.1 ​ vim config-example.txt 在config-example配置文件里配置mysql&…

nacos 2.2部署指南,并配置mysql数据库

首先进入到/opt cd /opt 1.下载安装包 wget https://github.com/alibaba/nacos/releases/download/2.2.0/nacos-server-2.2.0.tar.gz 2.解压 tar -zxvf nacos-server-2.2.0.tar.gz 3.修改配置 3.1修改为单机部署模式(默认为 vi /opt/nacos/bin/startup.sh 55行,示例: exp…

Cypress 安装及入门排坑指南

最近准备给公司项目做重构&#xff0c;原本是打算使用Jest来作为测试工具的&#xff0c;刚好无意之中接触到了Cypress这款测试工具&#xff0c;虽然用上它非常的不容易&#xff08;简直是一波三折&#xff09;&#xff0c;但是用上了之后觉得真香啊。我们本篇文章就是讲Cypress…

C进阶_C语言_浮点数存储规则_浮点型在内存中的存储

在开始讲解之前&#xff0c;我们看一下常见浮点数的写法&#xff1a; 3.14159 1E10&#xff08;它代表1.0乘以10的10次方&#xff09; 浮点型家族里有float、double、long double类型。 浮点型的表示范围是多少&#xff1f;我们打开float.h就能看到&#xff08;这里用everythi…

什么牌子的蓝牙耳机好?好用的蓝牙耳机排行

现如今&#xff0c;蓝牙耳机的用途越来越广泛&#xff0c;无论是追剧、游戏、通话、运动等&#xff0c;都能看到使用蓝牙耳机的人。在日常的使用中蓝牙耳机也逐渐取代有线耳机成为受人们欢迎的存在&#xff0c;那么&#xff0c;什么牌子的蓝牙耳机好&#xff1f;接下来&#xf…

功能强大的python包sklearn

1. sklearn简介sklearn是基于python语言的机器学习工具包&#xff0c;是目前做机器学习项目当之无愧的第一工具。 sklearn自带了大量的数据集&#xff0c;可供我们练习各种机器学习算法。 sklearn集成了数据预处理、数据特征选择、数据特征降维、分类\回归\聚类模型、模型评估等…

基于YOLO实践布匹缺陷检测

在缺陷检测领域中&#xff0c;越来越多看到AI的身影&#xff0c;路面缺陷、生产缺陷、PCB缺陷、瓶装酒缺陷检测等等&#xff0c;目标检测等模型发挥着越来越多的作用&#xff0c;像瓷砖缺陷和布匹缺陷这类平面类型的缺陷也不例外&#xff0c;最近做的项目中大多和这类型的数据有…

回顾2022,那些令人印象深刻的AI突破

文 | 付奶茶2022年是令人印象深刻的一年。在这一年中&#xff0c;我们目睹了许多前所未有的AI模型的出现&#xff0c;这些模型不断刷新着人类对AI力量的认知。关于这一年中最好的工作&#xff0c;每个人都有自己不同的看法。在这篇文章中&#xff0c;我们跟随Alan D. Thompson在…

对Mysql 超时配置项进行深入理解!

1 JDDB超时JDBC 是 Java 应用程序中用于访问数据库的一套标准 API类型4驱动是通过socket来处理字节流的。如果socket超时设置不合适&#xff0c;类型4驱动也可能有同样的错误&#xff08;连接被阻塞&#xff09;。1.2 JDBC超时层次应用程序WAS与数据库间的超时的层次更上层的超…

STL模拟实现——string

前言 STL(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;而且 是一个包罗数据结构与算法的软件框架。 STL有六大组件&#xff1a;算法&#xff0c;容器&#xff0c;迭代器&#xff0c;仿函数&am…

从0搭建一个WebRTC,实现多房间多对多通话,并实现屏幕录制

这篇文章开始会实现一个一对一WebRTC和多对多的WebRTC&#xff0c;以及基于屏幕共享的录制。本篇会实现信令和前端部分&#xff0c;信令使用fastity来搭建&#xff0c;前端部分使用Vue3来实现。 为什么要使用WebRTC WebRTC全称Web Real-Time Communication&#xff0c;是一种实…

安全狗重磅发布数据安全解决方案·数垒

一、 势在必行的数据安全 近年来&#xff0c;随着《网络安全法》、《数据安全法》、“数据二十条”等多部法律、意见法规等的相继颁布&#xff0c;数据安全管理与防护在国家政策上成为势在必行的行动之一。与此同时&#xff0c;伴随着数字经济时代的到来&#xff0c;数以万计…

Java基础语法-学习笔记

目录 01Java语言的发展 02Java的三大平台 03Java的主要特性 04JRE和JDK 1. 注释 使用的技巧 注意点 2. 关键字 2.1 概念 2.2 第一个关键字class 3. 字面量 区分技巧 4. 变量 4.1 什么是变量&#xff1f; 4.2 变量的定义格式 5. 数据类型 5.1 Java语言数据类型的…

STM32——TIM输出比较

文章目录一、TIM输出比较输出比较简介PWM简介输出比较通道(高级)输出比较通道(通用)输出比较模式控制器工作原理PWM基本结构参数计算三、PWM驱动LED呼吸灯电路设计关键代码关键函数与参数引脚重映射取消默认调试功能函数极性选择决定占空比&#xff0c;周期的三个函数四、PWM驱…

Design pattern-js的设计模式(一)

前言 什么是设计模式&#xff1f;&#xff08;Design pattern&#xff09;代表了最佳的实践&#xff0c;通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间…