定义:流密码是对称密码算法,从明文输入流逐位或逐字节产生密文输出。

实例:使用最广泛的流密码是RC4。

流密码结构:

  

流密码类似于”一次一密”,不同的是”一次一密”使用的是真正的随机数流,而流密码使用的是伪随机数流。

设计流密码的主要因素

1、加密序列的周期要长,若出现重复的周期过短,容易被破解

2、密钥流应该尽可能地接近真正随机数流的特征

3、密钥长度要长,以避免琼穷举攻击

RC4算法

RC4算法是Ron Rivest为RSA公司在1987年设计的一种流密码,作为RSA的商业机密直到1994年才被匿名公布于Internet。

该算法是一个可变密钥长度、面向字节操作的流密码。该算法以随机置换作为基础,其密码周期很可能大于10100,且该算法的运行速度很快。

RC4被用于为网络浏览器和服务器间通信而制定的SSL/TLS(安全套接字协议/传输层安全协议)标准中,以及作为IEEE 801.11无线局域网标准一部分的WEP(Wired Equivalent Privacy)协议和新的WiFi受保护访问协议(WAP)中。从这些应用来看,RC4构成了当今网络通信的非常重要的部分,因此这个算法非常重要。

RC4的逻辑结构图

算法描述:

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];

  }

加密中,将k的值与明文的下一字节异或,解密时将k的值与密文的下一字节异或。

当RC4的密钥长度超过128位时,目前没有任何攻击方法能够破解。不过WEP协议易受到一种特殊的攻击方式攻击,但这个问题本质上并不在与RC4本身,而是RC4密钥的产生途径有漏洞。

流密码和RC4的更多相关文章

  1. java-信息安全(二)-对称加密算法DES,3DES,AES,Blowfish,RC2,RC4

    概述 信息安全基本概念: DES(Data Encryption Standard,数据加密标准) 3DES(Triple DES,三重数据加密算法(TDEA,Triple Data Encrypti ...

  2. RC4

    RC4(Rivest Cipher 4)是一种流加密算法,密钥长度可变.并且因为加解密时使用的密钥相同,所以也为对称加密.加密过程和解密过程仅明密文的区别. 主要分为初始化 s 盒和伪随机密码生成组成 ...

  3. [转]RC4加密已不再安全,破解效率极高

    原文链接:http://freebuf.com/news/72622.html 原文发表时间:2015.7.17 安全研究人员称,现在世界上近三分之一的HTTPS加密连接可被破解,并且效率极高.这种针 ...

  4. [译]TLS中的RC4被攻破了,现在该怎么办?

    原文链接:https://community.qualys.com/blogs/securitylabs/2013/03/19/rc4-in-tls-is-broken-now-what 原文发表时间 ...

  5. ubuntu15.10下编译安装wine1.8 rc4

    ubuntu15.10下编译安装wine1.8rc4 Wine (“Wine Is Not an Emulator” 的递归缩写)是一个能够在多种 POSIX-compliant 操作系统(诸如 Li ...

  6. C#加密解密(DES,AES,Base64,md5,SHA256,RSA,RC4)

    一:异或^简单加解密(数字类型) 1:原理: 异或用于比较两个二进制数的相应位,在执行按位"异或"运算时,如果两个二进制数的相应位都为1或者都为0,则返回0;如果两个二进制数的相应 ...

  7. RAS RC4 AES 加密 MD5

    这两者唯一的相同点是设计者中都包含了MIT的Ron Revist教授.RSA是公钥密码算法,优点:不用事先通过秘密信道传递密钥,可以用于数字签名.缺点:速度慢RC4是序列密码算法,优点:速度快,缺点: ...

  8. RC4加密解密算法

    RC4相对是速度快.安全性高的加密算法.在实际应用中,我们可以对安全系数要求高的文本进行多重加密,这样破解就有一定困难了.如下测试给出了先用RC4加密,然后再次用BASE64编码,这样双重锁定,保证数 ...

  9. RC4加密算法

    RC4是Ron Rivest在1987年设计的密钥长度可变的流加密算法.它加解密使用相同的密钥,因此也属于对称加密算法.RC4是有线等效加密(WEP)中采用的加密算法,也曾经是TLS可采用的算法之一. ...

随机推荐

  1. 备忘:MySQL中修改表中某列的数据类型、删除外键约束

    -- MySQL中修改表中某列的数据类型 ALTER TABLE [COLUMN] 表名 MODIFY 列名 列定义; -- 删除外键约束 SHOW CREATE TABLE 表名; -- 复制CON ...

  2. 一口一口吃掉Hibernate(六)——多对多关联映射

    今天来说说hibernate中的多对多关联映射,多对多关联映射涉及到单向映射和双向映射2种. 首先举个多对多关联例子:用户User和角色Role,一个用户可以属于多个角色,一个角色可以有多个用户.这就 ...

  3. 11.QT-布局管理器(Box,Grid,Form,Stacked)

    布局管理器简介 QT中提供了对界面组件进行布局管理的类,用于对界面组件进行管理, 能够自动排列窗口中的界面组件 窗口大小变化后,便会自动更新界面组件的大小. 布局管理器可以自定义,从而达到更加个性化界 ...

  4. bootstrap table 和 x-editable 使用方法

    最近需要做一些数据表格,有同事推荐EasyUI,但经过比较还是选择了Bootstrap,一款极为强大的表格组件,基于Bootstrap 的 jQuery .本文还将介绍Bootstrap-editab ...

  5. iOS 选择排序

    简单选择排序的基本思想:(从小到大) 第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换: 第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换: 以此类 ...

  6. python笔记十二(匿名函数)

    一.匿名函数 有些情况下,我们需要把函数当做参数传入到另外的函数中,或者是把函数作为某个函数的返回值,此时我们就可以使用匿名函数. 匿名函数的标志是lambda.   >>> f = ...

  7. jQuery 捕获

    jQuery 拥有可操作 HTML 元素和属性的强大方法. jQuery DOM 操作 jQuery 中非常重要的部分,就是操作 DOM 的能力. jQuery 提供一系列与 DOM 相关的方法,这使 ...

  8. Docker 容器格式

    最初,Docker 采用了 LXC 中的容器格式.自 1.20 版本开始,Docker 也开始支持新的 libcontainer 格式,并作为默认选项. 对更多容器格式的支持,还在进一步的发展中.

  9. Scroll Segmented Control(Swift)

    今天用了一个github上一个比较好用的Segmented Control但是发现不是我要效果,我需要支持scrollView.当栏目数量超过一屏幕,需要能够滑动. 由于联系作者没有回复,我就自己在其 ...

  10. [Gradle系列]Gradle打包apk多版本,多渠道,多环境,多功能,多模块随心所欲

    Tamic: http://blog.csdn.net/sk719887916/article/details/53411771 开始 上篇Gradle发布Module(Maven)到jcenter, ...