zoukankan      html  css  js  c++  java
  • 区块链中的密码学系列之对称加密算法流密码(八)

    1. 前言

    2. 流密码的基本原理

    流密码:也称序列密码 (Stream Cipher) ,是指明文消息按字符(如二元数字)逐位地、对应地加密的一类密码算法。

    image-20190328162428354

    image-20190328162714946

    流密码的强度依赖于密钥序列,什么样的密钥序列是安全的?

    随机,周期性大,统计特性良好。

    随机数的性质:

    image-20190328163130126

    伪随机序列:

    流密码的密钥序列应该是变长、随机、 不可预测的。

    关键技术:通信双方的精确同步。

    伪随机数生成器:

    image-20190328163351565

    3. 密钥流生成器

    1.伪随机数生成器(prng):

    线性同余法伪随机数发生器;
    线性反馈移位寄存器。

    2.线性同余法

    要生成的伪随机数列R1,R2,R3....

    R1=(A×种子+C) mod M

    A、C、M是常量, A和C小于M

    R2=(A×R1+C) mod M

    ......... Rn+1=(A×Rn+C) mod M

    3. 线性同余法伪随机数发生器

    image-20190328164141422

    例:A=3,C=0,M=7,种子为6

    伪随机数:451326...451326

    R1=4,R2=5,R3=1,R4=3,周期6 谨慎选择A、C、M的值

    4. 线性反馈移位寄存器

    易于硬件实现,速度快,典型应用:A5,GSM语音加密标准。

    image-20190328164356572

    image-20190328164429807

    反馈函数f(a1,a2,...an)为n元布尔函数,自变量和因变量只能取0,1值

    f(a1,a2,...an)=cna1⊕ cn-1a2⊕ ...⊕ c1an

    c1,c2,...cn为反馈系数,取值0、1,表示开关断开和闭合

    若当前状态Si=(ai,ai+1,...ai+n-1)

    则:an+i=cnai⊕ cn-1ai+1⊕ ...⊕ c1an+i-1,i=1,2,...,移位寄存器的输入 Si+1=(ai+1,ai+2,...ai+n)

    流密码优点:

    实现简单;

    加解密速度快;

    没有或者有限的错误传播;

    典型的应用领域包括无线通信、外交通信。

  • 相关阅读:
    SQL解发器与SQL游标实例
    动态调用JS
    HDU_5729_rmq+二分
    struts2 在MyEclipse中 的配置
    Struts 1.2 中如何测试Action
    OGNL使用小结【转】
    JUnit中assertEquals和assertSame方法的不同
    struts2 ActionContext
    ser文件与Java对象序列化
    测试Action组件代码(StrutsTestCase)
  • 原文地址:https://www.cnblogs.com/hjs-junyu/p/10616101.html
Copyright © 2011-2022 走看看