第二章:流密码(基本概念)

  • 一次一密
  • 流密码的定义
  • 同步流密码

一次一密

  • 它是一种理想的加密方案,叫做一次一密密码(one-time pad)。
  • 明文:x= x 0 x_0 x0 x 1 x_1 x1 x 2 x_2 x2
  • 密钥:k= k 0 k_0 k0 k 1 k_1 k1 k 2 k_2 k2
  • 密文:y= y 0 y_0 y0 y 1 y_1 y1 y 2 y_2 y2
  • 加密函数: y i y_i yi=( x i x_i xi+ k i k_i ki)mod 26
  • 解密函数: x i x_i xi=( y i y_i yi- k i k_i ki)mod 26
  • 注意:密钥为随机产生的,而且只能使用一次。

优缺点:

  • 优点:密钥随机产生,仅仅使用一次
    • 无条件安全
    • 加密和加密为加法运算,效率很高
  • 缺点:密钥长度至少与明文长度一样长,密钥共享非常困难,不太实用。

那么有人就会想,可不可以只使用一小段密钥,就可以产生加密所有明文的密钥呢???

流密码的定义

流密码概况

  • 流密码(stream cipher)是一种重要的密码体制
    • 明文消息按照字符或者比特逐位加密
    • 流密码也成为序列密码(Sequence Cipher)
  • 流密码在20世纪50年代得到了飞跃式的发展
    • 密钥流可以用移位寄存器电路来产生,也促进了线性和非线性移位寄存器的发展。
    • 流密码主要基于硬件实现。

流密码的基本思想

  • 利用密钥k产生一个密钥流 z z z= z 0 z_0 z0 z 1 z_1 z1 z 2 z_2 z2…,并使用如下规则对明文串 x x x= x 0 x_0 x0 x 1 x_1 x1 x 2 x_2 x2…进行加密:
  • y y y= y 0 y_0 y0 y 1 y_1 y1 y 2 y_2 y2…= E z 0 Ez_0 Ez0( x 0 x_0 x0) E z 1 Ez_1 Ez1( x 1 x_1 x1) E z 2 Ez_2 Ez2( x 2 x_2 x2)…,

密钥流

  • 由密钥流发生器 f f f产生: z i z_i zi= f f f(k, σ i σ_i σi)
  • σ i σ_i σi是加密器中的记忆元件在时刻 i i i的状态
  • f f f是由k, σ i σ_i σi产生的函数
  • 如图:在这里插入图片描述

同步流密码

  • 内部记忆元件的状态 σ i σ_i σi独立于明文字符的叫做同步流密码,否则就叫做自同步流密码。
  • 在同步流密码中,由于 z i z_i zi= f f f(k, σ i σ_i σi)与明文字符无关,因而此时密文字符 y i y_i yi= E z i Ez_i Ezi( x i x_i xi)也不依赖于此前的明文字符。因此,可以将同步流密码的加密器分成密钥流产生器和加密变换器两个部分。模型如下:在这里插入图片描述
  • 二元加法流密码是目前最为常用的流密码体制,其加密变换可以表示为 y i y_i yi= z i z_i zi x i x_i xi。如图:在这里插入图片描述

流密码的需求

  • 一次一密密码是加法流密码的原型
    • 如果密钥用作滚动密钥流,则加法流密码就退化成一次一密密码。
  • 密码设计者最大的愿望是设计出一个滚动密钥生成器,使得密钥经过其扩展成的密钥流序列具有如下性质:
    • 极大的周期
    • 良好的统计特性
    • 抗线性分析
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
明日科技出版的c#开发典型模块大全配套光盘,要的可以下载,因大小受限,分开上传! 第1章 认识C#及开发环境 1.1 C#概述 1.1.1 C#发展历程 1.1.2 C#语言编程环境 1.2.NETFramework2.0简介 1.2.1 什么是.NETFramework2.0 1.2.2.NETFramework2.0特性 1.3 安装集成开发环境VisualStudio2005 1.3.1 安装VisualStudio2005开发环境 1.3.2 安装MSDN帮助 1.3.3 如何使用MSDN帮助 1.3.4 利用MSDN帮助附带的示例学习编程 1.4 启动VisualStudio2005开发环境 1.4.1 启动VisualStudio2005 1.4.2 创建项目 1.5 熟悉VisualStudio2005集成开发环境 1.5.1 新特性 1.5.2 主窗口 1.5.3 菜单栏 1.5.4 工具栏 1.5.5 文档窗口 1.5.6 工具箱窗口 1.5.7 解决方案资源管理器窗口 1.5.8 属性窗口 1.5.9 代码编辑器 1.5.10 “错误列表”面板 1.5.11 “输出”面板 1.6 程序调试 1.6.1 断点操作 1.6.2 使用开始、中断和停止执行功能调试程序 1.6.3 单步执行 1.6.4 运行到程序的指定位置 第2章 QQ企业通 2.1 设计思路 2.2 关键技术 2.2.1 INI文件的应用 2.2.2 线程的应用 2.2.3 在Socket中发送大容量的消息 2.2.4 将序列化或反序列化为对象 2.2.5 用InnerList列表记录信息 2.3 设计过程 2.3.1 类库的设计 2.3.2 客户端注册模块设计 2.3.3 客户端登录模块设计 2.3.4 客户端QQ模块设计 2.3.5 客户端消息发送模块设计 2.3.6 服务器端控制台模块设计 第3章 SQL数据表提取器模块 3.1 概述 3.2 关键技术 3.2.1 如何备份数据库 3.2.2 如何还原数据库 3.2.3 如何附加数据库 3.2.4 如何分离数据库 3.2.5 设置数据库模式 3.3 设计过程 3.3.1 主窗体 3.3.2 获取服务器名称 3.3.3 获取所有数据库 3.3.4 获取所有数据表 3.3.5 备份数据库 3.3.6 还原数据库 3.3.7 附加数据库 3.3.8 分离数据库 3.3.9 导出表结构 3.3.10 导出数据 第4章 万能搜索模块 4.1 设计思路 4.2 关键技术 4.2.1 如何制作一个接口程序 4.2.2 实现接口程序的信息互传 4.2.3 如何将接口程序加载到其他程序中 4.2.4 怎样操作RichtextBox控件的选择文本 4.2.5 如何获取数据表中字段的描述信息 4.3 设计过程 4.3.1 获取数据表中字段的中文信息 4.3.2 添加数据表的查询条件 4.3.3 向SQL语句中添加括号 4.3.4 查询生成后的SQL语句 4.3.5 主程序获得接口信息 第5章 万能打印模块 5.1 设计思路 5.2 关键技术 5.2.1 打印设置(PrintDocument类) 5.2.2 打印预览对话框(PrintPreviewDialog) 5.2.3 打印对话框(PrintDialog) 5.2.4 获取指定颜色值和字体样式 5.2.5 DataGridView控件的相关应用 5.3 设计过程 5.3.1 打印信息的设置 5.3.2 表格样式的设置 5.3.3 打印类的设置 5.3.4 打印数据信息 第6章 决策分析模块 6.1 设计思路 6.2 关键技术 6.2.1 游标的基本操作 6.2.2 存储过程的基本操作 6.2.3 透视表的基本概念 6.2.4 统计表的基本操作 6.2.5 单击显示右键菜单 6.3 设计过程 6.3.1 主窗体的初始化 6.3.2 透视表的筛选 6.3.3 透视表的设计 6.3.4 统计表的设计 第7章 自定义图表控件 7.1 设计思路 7.2 关键技术 7.2.1 控件的生成 7.2.2 如何在项目中添加控件 7.2.3 在“属性”对话框中添加属性 7.2.4 用GDI+绘制图形 7.2.5 如何在控件上绘制图形 7.2.6 获取扇形外弧中心点的位置 7.3 设计过程 7.3.1 向自定义控件中添加属性 7.3.2 获取绘制图表的初始值数据 7.3.3 绘制标签框 7.3.4 绘制图表中的表格 7.3.5 绘制条形图 7.3.6 绘制面形图 7.3.7 绘制饼形图 第8章 电子邮件收发模块 8.1 概述 8.2 关键技术 8.2.1 Base64编码格式 8.2.2 SMTP服务 8.2.3 POP3协议 8.2.4 使用Jmail组件接收邮件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旺旺的碎冰冰~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值