密码学_RC4算法

        在密码学中,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; #不断和明文进行异或

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

}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值