流密码总结

一.流密码基本概念

流密码一般逐字节或者逐比特处理信息。一般来说

  • 流密码的密钥长度会与明文的长度相同。
  • 流密码的密钥派生自一个较短的密钥,派生算法通常为一个伪随机数生成算法。

需要注意的是,流加密目前来说都是对称加密。
伪随机数生成算法生成的序列的随机性越强,明文中的统计特征被覆盖的更好。
流密码加解密非常简单,在已知明文的情况下,可以非常容易地获取密钥流。
流密码的关键在于设计好的伪随机数生成器。一般来说,伪随机数生成器的基本构造模块为反馈移位寄存器。当然,也有一些特殊设计的流密码,比如 RC4。

二.线性反馈移位寄存器(LFSR)

线性反馈移位寄存器(LFSR)是指,给定前一状态的输出,将该输出的线性函数再用作输入的移位寄存器。异或运算是最常见的单比特线性函数:对寄存器的某些位进行异或操作后作为输入,再对寄存器中的各比特进行整体移位。

  • 移位寄存器是流密码长产生密钥流的一个主要组成部分。

G F ( 2 ) 上 一 个 n 级 反 馈 移 位 寄 存 器 由 n 个 二 元 存 储 器 与 一 个 反 馈 函 数 f ( a 1 , a 2 , , . . . , a n ) 组 成 GF(2)上一个n级反馈移位寄存器由n个二元存储器与一个反馈函数f(a_1,a_2,,...,a_n)组成 GF(2)nnf(a1,a2,,...,an)

1.基本结构

例子

2.反馈表达式

输出序列满足

三.m序列的为随机性

什么是m序列?

m序列也就是最长线性移位寄存器序列的简称,是由线性反馈的移存器产生的周期最长的序列,也是一种伪随机序列。

什么是伪随机序列?
伪随机序列也就是,即使截获其中一段,也无法推测后面是什么。如果说密钥流是周期的, 要完全做到随机性是困难的。严格地说, 这样的序列不可能做到随机, 只能要求截获比周期短的一段密钥流时不会泄露更多信息, 这样的序列称为伪随机序列。

Golomb对伪随机周期序列提出了应满足的如下3个随机公设:

  • 在序列的一个周期内,0与1的个数相差至多为1。

  • 在序列的一个周期内,长为1的游程占游程总数的1/2,长为2的游程占游程总数的1/4,长多为 i 的游程占游程总数的 1/2i ,且在等长的游程中0的游程个数和1的游程个数相等。

  • 异自相关函数是一个常数。

n长m序列满足Golomb的3个随机性公设,具有如下性质:

  • 在一个周期内,0和1出现的次数分别为2n-1-1和2n-1。

  • 在一个周期内,总游程数为2n-1;对 1≤ i ≤ n-2,长为 i 的游程有2n-i-1个,且0和1游程各半;长为n-1的0游程一个,长为n的1游程一个。

四.m序列的破译

对于m序列(周期为2^n-1),如果攻击者知道了2n位明密文对,则可确定反馈多项式的系数(因为ki = mi+ ci),从而确定该LFSR接下来的状态,也就能得到余下的密钥序列。

  • 明文M={m1,m2,……,m2n},
  • 密文C={c1,c2,……,c2n},
  • 由ci=mi ⨁ \bigoplus zi,zi=ci ⨁ \bigoplus mi,i=1,2,……,2n
  • 可得密钥z={z = z1z2····z2n},

z = z1z2····z2n

则LFSR输出序列的连续的n+1个状态:

S1 = (z1z2····zn)

S2 = (z2z3····zn+1)

S3 = (zn+1zn+2····z2n)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

非线性序列

关于流密码呢,当然还有一些非线性序列,但是非线性序列的生成也是以线性序列为基础的,非线性序列生成器也是以LFSR为基础的,一般来说,非线性序列生成器都需要多个LFSR 来驱动,这个的应用就相当的少了,大致了解就好。

LFSR序列密码在已知明文攻击下是可破译的,故人们向非线性领域探索。

  1. 非线性反馈移位寄存器序列
  • 令反馈函数为非线性函数,便构成非线性移位寄存器,其输出序列为非线性序列,序列周期最大可达2^n,达最大周期的序列称为M序列。
  • M序列具有很好的随机统计特性,又有大量的不同序列可供选择,是序列密码中主要的研究内容之一,目前还处于艰难的研究当中。
  1. 多个LFSR的非线性组合序列
  • 为提高序列的线性复杂度和随机性,可将多个LFSR进行组合,LFSR用来保证密钥流周期的长度,非线性组合函数用来保证密钥流的各种密码性能,以抗击各种可能的攻击。

  • 7
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Java大华视频对接是指使用Java编程语言对接和调用大华视频服务。在对接过程中,可以使用Java提供的网络编程和多线程技术,通过访问大华视频服务的API接口,获取视频数据,并进行相应的处理和展示。 要实现Java大华视频对接,可以按照以下步骤进行: 1. 导入相关的Java库和依赖项,以便能够使用Java提供的网络和多线程功能。 2. 创建与大华视频服务的连接。可以通过建立网络连接,或使用提供的SDK等方式进行连接。 3. 进行用户认证。根据大华视频服务的要求,使用合适的认证方式(如用户名密码、密钥等)进行身份验证。 4. 获取视频数据。通过调用大华视频服务的API接口,获取视频信息和数据。可以根据需要选择获取实时或历史。 5. 处理和展示视频数据。根据项目需求,对获取的视频数据进行处理,例如解码、转码、分析等。同时,可以使用Java提供的图形界面组件或其他库,将视频展示在界面上。 6. 监控视频状态和错误处理。在视频对接过程中,需要实时监控视频的状态,例如连接状态、视频质量等,并进行错误处理,以保证视频正常运行和展示。 在Java大华视频对接的过程中,需要熟悉Java的网络编程和多线程技术,并了解大华视频服务的相关API和协议。同时,需要关注视频的安全性和稳定性,以保证视频的正常对接和展示。 ### 回答2: Java是一种广泛应用于开发软件和互联网应用的编程语言,而大华视频对接则是指使用Java语言来对接大华视频的功能。 首先,针对Java对接大华视频,我们需要先了解大华视频的相关API和文档。通过研究大华的开发文档,我们可以获取到视频相关的接口和方法。 在Java中,我们可以使用一些开源库或框架来实现大华视频的对接。例如,可以使用Java中的网络编程库,从大华视频设备中获取视频数据,并进行解析和处理。同时,我们还可以使用Java图形库,将获取到的视频数据显示在用户界面上。 在具体的实现过程中,我们需要定义一个Java类来管理与大华视频设备之间的通信。在这个类中,我们需要编写连接大华视频设备的方法,并根据大华的API文档,调用相关接口来获取视频数据。 接着,我们可以使用Java的图形库来创建一个视频播放窗口,将获取到的视频数据渲染到窗口上。这可以通过使用图形库提供的API来实现。 最后,当我们完成对大华视频的对接后,我们可以添加一些额外的功能,如视频播放控制(播放、暂停、快进、快退等)、视频录制、视频截图等。 总结来说,使用Java对接大华视频需要研究大华的开发文档,了解其API和接口,然后使用Java的网络编程和图形库来实现视频的获取、解析和显示。通过合理的设计和编码,我们可以实现功能完善和稳定的大华视频对接。 ### 回答3: Java 大华视频对接是指使用Java编程语言与大华视频设备进行连接和通信的过程。 大华视频对接可以采用不同的方法,包括使用开源库或使用大华提供的SDK进行开发。 一种常见的方法是使用Java的网络编程功能与大华视频设备建立TCP/IP连接。首先,需要获取大华视频设备的IP地址和端口号。然后,在Java代码中使用Socket类创建一个套接字来连接视频设备。之后,可以使用输入输出来传输视频数据和接收设备的响应。 另一种方法是使用大华提供的SDK进行对接。大华提供了Java SDK,其中包括了一系列的API和示例代码,可以方便地实现与大华视频设备的通信。开发者可以根据自己的需求调用相应的API,实现视频的媒体传输、设备的控制等功能。 在进行大华视频对接时,需要注意以下几点: 1. 确保视频设备的网络连接正常,可以通过Ping命令测试设备的连通性。 2. 确保Java编程环境的配置正确,包括引入必要的库文件和SDK。 3. 遵循大华提供的开发文档和API,按照正确的顺序调用相关方法,以保证正常的通信和数据传输。 4. 根据需求,可以设置视频的参数,例如分辨率、码率等,以获得更好的视频体验。 总而言之,Java 大华视频对接是一项能够让Java应用实现与大华视频设备通信和交互的技术,可以通过网络编程或使用大华SDK等方法实现。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值