流密码

  • 流密码已关闭评论
  • 5 views
  • A+
所属分类:安全闲碎
  • 伪随机密钥流(keystream)由一个随机的种子(seed)通过算法(称为:PRG,pseudo-random generator)得到, 作为种子,则 作为实际使用的密钥进行加密解密工作。为了保证流加密的安全性,PRG必须是不可预测的。该算法解决了对称加密完善保密性(perfect secrecy)的实际操作困难,由于完善保密性要求密钥长度不短于明文长度,故而实际操作存在困难,改由较短数据流通过特定算法得到密钥流。

    算法

    KSA

    初始化长度为256的S盒。第一个for循环将0到255的互不重复的元素装入S盒。第二个for循环根据密钥打乱S盒。

    1
    2
    3
    4
    5
    6
    7
    8
    for i from 0 to 255
    S[i] := i
    endfor
    j := 0
    for( i=0 ; i<256 ; i++)
    j := (j + S[i] + key[i mod keylength]) % 256
    swap values of S[i] and S[j]
    endfor

    PRGA

    下面i,j是两个指针。每收到一个字节,就进行while循环。通过一定的算法((a),(b))定位S盒中的一个元素,并与输入字节异或,得到k。循环中还改变了S盒((c))。如果输入的是明文,输出的就是密文;如果输入的是密文,输出的就是明文。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    i := 0
    j := 0
    while GeneratingOutput:
    i := (i + 1) mod 256 //a
    j := (j + S[i]) mod 256 //b
    swap values of S[i] and S[j] //c
    k := inputByte ^ S[(S[i] + S[j]) % 256]
    output K
    endwhile

    此算法保证每256次循环中S盒的每个元素至少被交换过一次。

  • 相关推荐: 在 Linux 上用密码加密和解密文件 | Linux 中国

     导读:age 是一个简单的、易于使用的工具,允许你用一个密码来加密和解密文件。                   本文字数:1994,阅读时长大约:2分钟https://linux.cn/article-13592-1.html作者:Sumant…