序列密码实现

1 什么是序列密码?

使用序列密码对某一消息m执行加密操作时一般是先将m分成连续的符合(一般为比特串),m=m1m2m3…;然后使用密钥流k=k1k2k3...中的第i个元素ki对明文消息的第i个元素mi执行加密变换,i=1,2,3...;所有的加密输出连接在一起就构成了对m执行加密后的密文。

2 序列密码实现原理

很容易想到,使用序列密码对消息m进行加密时,最简单的做法就是让密钥流中的第i个比特与明文串中的对应比特直接做XOR运算。

由于实现XOR逻辑运算非常简单,因此这样的加/解密操作是快速有效的。如果这里的密钥流是完全随机的,与明文相同长度的比特串,对应的密码被称为一次一密体制。显然,此时明文串与密文串之间是相互独立的。不知道密钥的攻击者即是守候在公开信道上进而得到密文串,也无法获得关于明文的任何信息。

使用一次一密体制需要解决如何生成随机密码流的问题:密钥流必须是随机实现的,并且合法用户可以很容易的再生该密钥流。一方面,一个与明文一样长的随机位序列很难记住;另一方面,如果密钥流是重复的位序列,虽然容易记住但很不安全。因此,这是一个两难的问题:如何生成一个可以用做密钥流的“随机”比特序列,要求既易于使用,又不能太短以至于不安全。在通常使用的序列密码中,加解密所需要的这种序列是由一个确定性的密钥流生成器产生的,该生成器的输入是一个容易记住的密钥,称之为密钥流生成器的初始密钥和种子密钥。因此,严格来说,密钥流序列都是伪随机序列。流密码的安全等级完全取决于密钥流的安全性。因此什么样的伪随机序列是安全可靠的密钥流序列,如何构造这种序列就是流密码研究的关键问题。实用的流密码是以少量的,一定长度的种子密钥经过逻辑运算产生周期较长,可用于加解密运算的伪随机序列。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • CTF中那些脑洞大开的编码和加密 0x00 前言 正文开始之前先闲扯几句吧,玩CTF的小伙伴也许会遇到类似这样的问...
    查无此人asdasd阅读 11,328评论 0 19
  • 0x01 目录 常见编码: ASCII编码 Base64/32/16编码 shellcode编码 Quoted-p...
    H0f_9阅读 14,509评论 2 17
  • 前言 《图解密码技术》一书介绍了很多关于密码的知识,通读一遍需要不少时间。为了方便学习,我对书中关键的部分进行了总...
    咖枯阅读 12,064评论 1 25
  • 本文主要介绍移动端的加解密算法的分类、其优缺点特性及应用,帮助读者由浅入深地了解和选择加解密算法。文中会包含算法的...
    苹果粉阅读 13,957评论 5 29
  • Guide to BluetoothSecurity原文 本出版物可免费从以下网址获得:https://doi.o...
    公子小水阅读 12,662评论 0 6