【密码学】五、序列密码

序列密码

  • 1、概述
    • 1.1序列密码的分类
      • 1.1.1同步序列密码
      • 1.1.2自同步序列密码
  • 2、序列密码的组成
    • 2.1密钥序列生成器KG
    • 2.2有限状态自动机
  • 3、LFSR

1、概述

采用一个短的种子密钥来控制某种算法获得长的密钥序列的办法,用以提供加解密,这个种子密钥的长度较短,存储、分配都比较容易。
察罕俄国密钥序列的密钥发生器就是序列密码的关键。
分组密码与序列密码的区别在于有无记忆性,分组密码无记忆性,序列密码又记忆性,里面有一个记忆元件。

1.1序列密码的分类

分为同步序列密码和自同步序列密码两大类。
同步序列密码中,密钥序列的产生独立于明文消息和密文消息。因此可以将同步序列密码的加密器分成密钥流生成器和加密变换器两个部分。其中同步序列密码的加密变换可以有很多选择,只要保证变换是可逆的就可以。

1.1.1同步序列密码

同步序列密码的关键是密钥流生成器,一般可以看成一个参数为k的有限状态自动机,由一个输出序列z,一个状态集,两个函数(状态转移函数和输出函数)和一个初始状态组成。
输出函数是指,将当前状态变成输出序列中的一个元素。
关键在于找出适当的状态转移函数和输出函数,采用线性的状态转移函数和非线性的输出函数,将能够进行深入的分析并可以得到优良的密钥流生成器。
所以,可以将这一类生成器分成驱动部分和非线性组合部分。
驱动部分控制密钥流生成器的状态转移,并为非线性组合部分提供统计性能好的序列;而非线性组合部分要利用这些序列组合出满足要求的密钥流序列。
目前流行实用的密钥流生成器如下:

LFSR
F

1.1.2自同步序列密码

自同步序列密码又称为非同步序列密码,其中产生的密钥序列是主密钥和固定大小的前序密钥序列的函数。
在这里插入图片描述
其中,g是通过状态和主密钥k生成密钥序列z的函数,h是通过密钥序列z和明文m生成密文c的函数。其加解密如下图:
加解密
解密映射仅与固定长度的密文字符有关,因此密文位在被删除或者插入的时候可以进行自同步。

2、序列密码的组成

2.1密钥序列生成器KG

KG输入的种子密钥k是较短的。
一般的KG结构如图所示:

xi
驱动子系统f
非线性组合子系统F
种子密钥k

f一般由m序列生成器构成,提供若干周期大、统计特性好的序列x(称为驱动序列)
F是把f产生的多条驱动序列综合在一起的一些非线性编码手段,目的是有效地破坏和掩盖多条驱动序列中存在地规律或关系,提高线性复杂度。

2.2有限状态自动机

有限状态自动机是具有离散输入和输出的一种数学模型,由有限状态集、有限输入字符集和有限输出字符集以及转移函数组成。
可以用有向图表示转移,转移图。

3、LFSR

移位寄存器是序列密码产生密钥流的一个主要组成部分。GF(2)上的一个n级反馈移位寄存器由n个二元存储器和一个反馈函数f组成。
结构
链接: link
LFSR因其实现简单、速度快、有较为成熟的理论等优点成为构造密钥流生成器的重要的部件之一。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/17540.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt 5. QSerialPort串口收发

1. 代码 //ex2.cpp #include "ex2.h" #include "ui_ex2.h" #include <QtSerialPort/QSerialPort> #include <QtSerialPort/QSerialPortInfo>int static cnt 0;Ex2::Ex2(QWidget *parent): QDialog(parent), ui(new Ui::Ex2) {ui->setupUi…

【深度学习】InST,Inversion-Based Style Transfer with Diffusion Models,论文,风格迁移,实战

代码&#xff1a;https://github.com/zyxElsa/InST 论文&#xff1a;https://arxiv.org/abs/2211.13203 文章目录 AbstractIntroductionRelated WorkImage style transferText-to-image synthesisInversion of diffusion models MethodOverview ExperimentsComparison with Sty…

Java版企业电子招标采购系统源代码Spring Boot + 二次开发 + 前后端分离 构建企业电子招采平台之立项流程图

项目说明 随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大&#xff0c;公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境&#xff0c;最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范&#xff0c;以及审…

android 如何分析应用的内存(十四)——jdb命令行

android 如何分析应用的内存&#xff08;十四&#xff09; 前面的系列文章介绍了android应用如何分析native内存。 接下来就是android应用如何分析java内存。同native一样&#xff0c;我们也希望能够看到 ART的堆和栈的情况&#xff0c;以及锁的情况&#xff0c;方法的本地变…

【驱动开发day8作业】

作业1&#xff1a; 应用层代码 #include <stdlib.h> #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #include <sys/ioctl.h>int main(int…

Docker安装es以及ik分词器

1、拉取镜像 docker pull elasticsearch:7.10.12、下载对应版本的ik分词、并将它们解压到ik文件夹下&#xff0c;如图 https://github.com/medcl/elasticsearch-analysis-ik/releases 3、在服务器上创建文件夹 mkdir /usr/elklog/elk/es mkdir /usr/elklog/elk/es/data mkdi…

Web3教程| 如何发现并追踪“聪明钱”?

在加密领域&#xff0c;聪明钱&#xff08;Smart Money&#xff09;是指拥有专业知识、对市场有深入了解以及具有信息优势的专业投资机构或个人投资者。 聪明钱一直以来都是加密市场中的关注焦点&#xff0c;因为这些实体通常可以获得普通交易者不易获得的信息和资源&#xff0…

【Web开发指南】如何用MyEclipse进行JavaScript开发?

由于MyEclipse中有高级语法高亮显示、智能内容辅助和准确验证等特性&#xff0c;进行JavaScript编码不再是一项繁琐的任务。 MyEclipse v2023.1.2离线版下载 JavaScript项目 在MyEclipse 2021及以后的版本中&#xff0c;大多数JavaScript支持都是开箱即用的JavaScript源代码…

【运维】hive 终端突然不能使用:Hive Schema version does not match metastore‘s schema version

文章目录 一. 问题描述二. 常规排查1. 元数据库2. hive-site.xml相关meta连接信息检查 三. 正解 一. 问题描述 进入hive终端&#xff0c;执行如下命令报错&#xff1a; hive> show tables; FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: …

冒泡排序算法

冒泡排序 算法说明与代码实现&#xff1a; 简单分析&#xff0c;外循环次数为数据len(arr)-1次&#xff0c;内循环为len(arr)-外循环次数 下面是使用Go语言实现冒泡排序算法的示例&#xff1a; package mainimport "fmt"func bubbleSort(arr []int) {n : len(arr…

【JavaEE】简单了解JVM

目录 一、JVM中的内存区域划分 二、JVM的类加载机制 1、类加载的触发时机 2、双亲委派模型 1.1、向上委派 1.2、向下委派 三、JVM中的垃圾回收机制&#xff08;GC&#xff09; 1、确认垃圾 1.1、引用计数&#xff08;Java实际上没有使用这个方案&#xff0c;但是Pytho…

【HttpRunnerManager】搭建接口自动化测试平台实战

目录 一、需要准备的知识点 二、我搭建的环境 三、搭建过程 四、访问链接 五、两个问题点 【整整200集】超超超详细的Python接口自动化测试进阶教程&#xff0c;真实模拟企业项目实战&#xff01;&#xff01; 一、需要准备的知识点 1. linux: 安装 python3、nginx 安装和…

emWin - BMP图片显示

BmpCvt.exe 用途 利用BMP图片&#xff0c;进行GUI显示&#xff1b;ICON等图标都是小BMP图片&#xff0c;核心是将BMP图片&#xff0c;转成emWin支持的方式&#xff0c;最终显示到TFT屏上 使用BmpCvt.exe工具&#xff0c;将各个图片转成相应的C文件. emWin有关的工具&#xff…

测试|Selenium介绍及环境搭建

测试|Selenium介绍及环境搭建 1.Selenium是什么 Selenium是用来做web网站 UI自动化的测试工具/测试框架。 我们这里说的Selenium是Selenium2.0&#xff0c;它由Selenium IDE&#xff0c;Webdriver, Selenium Grid组成。 Selenium IDE是用于Selenium测试的完成集成开发环境&…

云计算——云计算关键技术

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 前言 一.云计算关键技术 1.虚拟化技术 2.分布式数据存储技术 &#xff08;1&…

天下风云出我辈,AI准独角兽实在智能获评“十大数字经济风云企业

时值盛夏&#xff0c;各地全力拼经济的氛围同样热火朝天。在浙江省经济强区余杭区这片创业热土上&#xff0c;人工智能助力数字经济建设正焕发出蓬勃生机。 7月28日&#xff0c;经专家评审、公开投票&#xff0c;由中共杭州市余杭区委组织部&#xff08;区委两新工委&#xff…

如何解决制造业数字化改造的障碍?

制造业的数字化转型可能是一个复杂且具有挑战性的过程&#xff0c;但解决以下障碍有助于为成功实施铺平道路&#xff1a; 抵制变革&#xff1a;数字化转型中最常见的挑战之一是员工的抵制&#xff0c;尤其是那些习惯传统方法的员工。为了克服这一问题&#xff0c;组织需要培养一…

JDBC-笔记

JDBC 1. JDBC介绍 JDBC&#xff08;Java Database Connectivity&#xff09;是一种用于连接和操作数据库的 Java API。 通过Java操作数据库的流程 第一步&#xff1a;编写Java代码 第二步&#xff1a;Java代码将SQL发送到MySQL服务端 第三步&#xff1a;MySQL服务端接收到SQ…

Spring中IOC容器常用的接口和具体的实现类

在Spring框架没有出现之前&#xff0c;在Java语言中&#xff0c;程序员们创建对象一般都是通过关键字new来完成&#xff0c;那时流行一句话“万物即可new&#xff0c;包括女朋友”。但是这种创建对象的方式维护成本很高&#xff0c;而且对于类之间的相互关联关系很不友好。鉴于…

【Web】web

dns与域名 网络是基于tcp/ip协议进行通信和连接的 应用层——传输层——网络层——数据链路层——物理层 每一定的台主机都有一个唯一且固定的地址标识——IP地址 IP地址的做用&#xff1a;1.区分用户和计算机&#xff1b;2.进行通信 IP地址由32位二进制数组成&#xff0c;…