美文网首页
序列密码实现

序列密码实现

作者: reknow | 来源:发表于2017-07-25 13:30 被阅读0次

1 什么是序列密码?

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

2 序列密码实现原理

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

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

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

相关文章

  • 序列密码实现

    1 什么是序列密码? 使用序列密码对某一消息m执行加密操作时一般是先将m分成连续的符合(一般为比特串),m=m1m...

  • 外泌体相关文章

    Nature | 破解miRNA释放或滞留的序列密码Nature | 破解miRNA释放或滞留的序列密码[http...

  • 序列密码

    什么是序列密码 使用序列密码对某一消息m执行加密操作时一般是先将m分成连续的符合(一般为比特串),m=m1m2m3...

  • RC4加解密算法python简单实现

    序列密码又称流密码,原理是明文流和密钥流按顺序逐位异或运算,从而产出密文流,序列密码属于对合运算。 以下是典型的序...

  • Android序列化简析

    目录1、序列化与反序列化概念2、序列化用途3、Serializable实现序列化4、 Parcelable实现序列...

  • java不常用的关键字

    1、transient 一个类在实现了Serializable接口之后,其中有部分数据不想进行序列化,比如密码啥的...

  • 比特序列密码

    现代密码是建立在计算机的基础之上。计算机操作的对象不是文字,而是由0和1组成的比特序列。无论是文字、图像、声音...

  • mackdown 基本语法

    一.无序列表 实现样式 无序列表1 无序列表2无序列表2.1无序列别2.2 二.有序列表 实现样式 1.有序列表1...

  • MarkDown常用标签

    有序列文本 实现方式:数字. 序列1 序列2 无序列文本 实现方法:- 文本 文本1 文本2 连接的使用 【文本】...

  • Protobuf的序列化与反序列化

    Protobuf的序列化与反序列化 proto.proto文件内容 Java 实现 序列化 反序列化 GO 实现 ...

网友评论

      本文标题:序列密码实现

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