RC4加密

RC4加密

是一种对称加密。
加密的密钥流和明文一样长
同样的密钥和同样的长度能确定同一个密钥流。

几个关键的理解:
1、密钥流:RC4算法的关键是根据明文和密钥生成相应的密钥流,密钥流的长度和明文的长度是对应的,也就是说明文的长度是500字节,那么密钥流也是500字节。当然,加密生成的密文也是500字节,因为密文第i字节=明文第i字节^密钥流第i字节;

2、状态向量S:长度为256,S[0],S[1].....S[255]。每个单元都是一个字节,算法运行的任何时候,S都包括0-255的8比特数的排列组合,只不过值的位置发生了变换;

3、临时向量T:长度也为256,每个单元也是一个字节。如果密钥的长度是256字节,就直接把密钥的值赋给T,否则,轮转地将密钥的每个字节赋给T;

4、密钥K:长度为1-256字节,注意密钥的长度 keylen 与明文长度、密钥流的长度没有必然关系,通常密钥的长度趣味16字节(128比特)。

RC4被用于为网络浏览器和服务器间通信而制定的SSL/TLS(安全套接字协议/传输层安全协议)标准中,以及作为IEEE 801.11无线局域网标准一部分的WEP(Wired Equivalent Privacy)协议和新的WiFi受保护访问协议(WAP)中


算法描述
算法描述:

1、S和T的初始状态

S中元素的值按升序被置为0-255,同时建立一个临时向量T。将密钥的值循环复制到T向量中。

2、S的初始置换

用T产生S的初始置换,置换伪码如下


  j = 0;

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

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

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

  }

因为对S的操作仅是交换,S仍然包含所有值为0-255的元素。

3、密钥流的生成

密钥流生成伪码如下

  i , j = 0;

  while (true){

    i = (i + 1) mod 256;

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

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

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

    k = S[t];

  }
流密码结构图.jpg
RC4结构图.jpg

Python小知识

Paste_Image.png

Python知识记录

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • CTF中那些脑洞大开的编码和加密 0x00 前言 正文开始之前先闲扯几句吧,玩CTF的小伙伴也许会遇到类似这样的问...
    查无此人asdasd阅读 6,432评论 0 19
  • 这篇文章主要讲述在Mobile BI(移动商务智能)开发过程中,在网络通信、数据存储、登录验证这几个方面涉及的加密...
    雨_树阅读 3,039评论 0 6
  • 0x01 目录 常见编码: ASCII编码 Base64/32/16编码 shellcode编码 Quoted-p...
    H0f_9阅读 13,497评论 2 17
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,554评论 19 139
  • 早就有了写一些东西的想法,写写自己不切实际的天马行空!
    Shriyu阅读 158评论 0 0

友情链接更多精彩内容