RC4加密原理步骤

RC4是一种流加密算法,常用于WEP和早期的TLS协议。其加密过程包括初始化状态向量,使用用户输入的密钥进行轮转填充,状态向量置换,以及秘钥流生成与加密。RC4的Java实现和优缺点也进行了概述,尽管速度快,但存在弱密钥和子密钥序列重复的问题,可能导致安全性降低。
摘要由CSDN通过智能技术生成

RC4

对明文使用同一个密钥异或两次最后是得到原文的

明文,是指没有加密的文字(或者字符串),一般人都能看懂的意思。

密文,是指经过某个加密算法,把一个明文,变成另一些文字。从密文本身,一般不能看出明文本身的意思 。不然就失去加密的意义。要想得到明文,就能通过对应的解密算法,才能得到明文 ,从而知道本来的意思 。

1.简介

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

2.原理及步骤

(图片转载地址:https://www.cnblogs.com/block2016/p/5601925.html)
在这里插入图片描述

1>先初始化状态向量S(256个字节,用来作为密钥流生成的种子1)

按照升序,给每个字节赋值0,1,2,3,4,5,6…,254,255

for (int i=0;i<256;i++){
   
    S[i] = i
}
2>初始密钥(由用户输入),长度任意

如果输入长度小于256个字节,则进行轮转,直到填满
例如输入密钥的是1,2,3,4,5 , 那么填入的是1,2,3,4,5,1,2,3,4,5,1,2,3,4,5…
由上述轮转过程得到256个字节的向量T(用来作为密钥流生成的种子2)

3>开始对状态向量S进行置换操作(用来打乱初始种子1)

按照下列规则进行

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

 j = 0;
  for (i = 0 ; i < 256 ; i++){
   
    j = (j + S[i] + T[i]) mod 256;
    swap(S[i] , S[j]);
  }

这样处理后的状态向量S几乎是带有一定的随机性了

4>最后是秘钥流的生成与加密,很多人在这里不是特别理解,别的博客也没有写的很简洁明了

假设我的明文字节数是datalength=1024个字节(当然可以是任意个字节)
i=0;
j=0;
while(datalength–){//相当于执行1024次,这样生成的秘钥流也是1024个字节

   i = (i + 1) mod 256;
   j = (j + S
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值