RC4加密

作者: 宇文黎琴 | 来源:发表于2017-06-16 10:00 被阅读115次

    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知识记录

    相关文章

      网友评论

          本文标题:RC4加密

          本文链接:https://www.haomeiwen.com/subject/mippqxtx.html