RC4加密算法C++实现

RC4算法简介

RC4是由Rivest于1987年设计的一种序列密码,被广泛应用于Windows和无线通信系统等;
RC4是一种基于字节的序列的非移位寄存器序列,输出字节流;
RC4使用了一个28字节大小的非线性数据表(简称S表);S表的值S0, S1, …, S255是数字0到255的一个排列。对S表进行非线性变换,得到密钥流;
RC4支持不同密钥长度,美国政府规定用于出口的密钥长度不得超过40位。
RC4算法简单、高效,特别适合软件实现,加密速度比DES大约快10倍

在WLAN的WEP协议中,支持 64 位和128 位加密,由于密钥是5或13个ASCII 字符,64 位加密有时称为 40 位加密;128 位加密有时称为 104 位加密。其中的24bit由初始化向量填充,但因为初始向量太短而不安全,若正确使用密钥,则RC4依然安全

RC4算法原理

RC4对S表的初始化算法: 两个计数器I和J,I=0,J=0

  1. 对S表进行线性填充:SI=I, 0 ≤I<255
  2. 用密钥填充另一个256字节的数组K,如果密钥长度小于256字节,则依次重复填充,直至填满这个数组, K0, K1, …, K255
  3. 对于I=0到255重复以下步骤:
    (1) J=J+SI+KI mod 256
    (2) 交换SI和SJ

S表的开始256个状态舍弃则更安全

RC4输出密钥流字节z的算法

  1. I=0,J=0
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值