zoukankan      html  css  js  c++  java
  • 序列密码

    序列密码

    引言

    • 序列密码又称流密码,它是将明文串逐位地加密成密文字符。并有实现简单、速度快、错误传播少等特点。
    • 密码按加密形式可分为:
      • 分组密码
      • 序列密码
    • 密码按密钥分为:
      • 对称密码(私钥密码)
      • 非对称密码(公钥密码)
    1. 加解密算法
    • 明文序列:m=m1m2……mn……
    • 密钥序列:k=k1k2……kn……
    • 加密:ci=mi+ki,i=1,2,3,……
    • 解密:mi=ci+ki,i=1,2,3,……
    • 注:+模2加,0+0=0,0+1=1,1+0=1,1+1=0
    • 例 m=101110011,
    • c=m+k=111000110,
    • m=c+k=101110011.

    1949年,Shannon证明了“一次一密”密码体制是绝对安全的。如果序列密码使用的密钥是真正随机产生的,与消息流长度相同,则是“一次一密”体制。但缺点是密钥长度要求与明文长度相同,现实情况中不可能实现,故现实中常采用较短的种子密钥,利用密钥序列生成器产生一个伪随机序列。

    序列密码的原理

    分组密码与序列密码都属于对称密码,但两者有较大的不同:

    1. 分组密码将明文分组加密,序列密码处理的明文长度为1bit;
    2. 分组密码算法的关键是加密算法,序列密码算法的关键是密钥序列生成器。
    3. 序列密码分类
      同步序列密码
    • 密钥序列的产生仅由密钥源及密钥序列生成器决定,与明文消息和密文消息无关,称为同步序列密码。
      • 缺点:如果传输过程中密文位被插入或删除,则接收方与放送方之间产生了失步,解密即失败。
        自动同步序列密码
    • 密钥序列的产生由密钥源、密钥序列生成器及固定大小的以往密文位决定,称为自同步序列密码(非同步密码)。
      • 优点:如果密文位被删除或插入时,可以再失去同步一段时间后,自动重新恢复正确解密,只是一些固定长度的密文无法解密。
    1. 密钥序列生成器的要求(key generation)
    • 种子密钥k的长度足够大,一般128bit以上,防止被穷举攻击;
    • 密钥序列{ki}具有极大的周期性
      现代密码机数据率高达10^8 bit/s,如果10年内不使用周期重复的{ki},则要求{ki}的周期T>=3*106或255;
    • 良好的统计特征。在一个周期内0、1游程的频率大抵相当;
    • 用统计方法由{ki}提取KG的结构或K的信息在再计算上是不可信的。
    • 满足混乱醒、扩散性
  • 相关阅读:
    Java8中利用stream对map集合进行过滤的方法
    安装数据库MySQL,启动时报错 服务没有响应控制功能 的解决办法
    mysql 安装时 失败,提示 因为计算机中丢失 msvcp140.dll
    复习一下数学排列组合公式的原理
    java如何进行排列组合运算
    Redis 分布式锁:使用Set+lua替代 setnx
    深入详解Go的channel底层实现原理【图解】
    MYSQL MVCC实现原理详解
    聚簇索引和非聚簇索引,全在这!!!
    深度解密Go语言之 map
  • 原文地址:https://www.cnblogs.com/liugangjiayou/p/12461331.html
Copyright © 2011-2022 走看看