流加密法

《经典密码学与现代密码学》书摘:

一个简单的“流加密法”需要一个“随机”的“二进制位流”作为“密钥”。通过将明文与这个“随机的密钥流”进行XOR逻辑运算,就可以生成密文。将密文与相同的“随机密钥流”进行XOR逻辑运算即可还原明文。

要实现XOR逻辑运算很简单,当作用于位一级上时,这是一个快速而有效的加密法。唯一的问题是必须解决如何生成“随机密钥流”。这之所以是一个问题,是因为“密钥流”必须是“随机”出现的,并且合法用户很容易再生该密钥流。如果密钥流是重复的位序列,容易被记住,但不很安全。而一个与明文一样长的随机位序列很难记住。因此,这是一个两难的处境,如何生成一个“随机”位序列作为“密钥流”,要求易于使用,但又不能太短以至于不安全。

解决流加密法的密钥问题:开发一个“随机位生成器”,它是基于一个短的密钥来产生密钥流的。生成器用来产生密钥流,而用户只需记住如何启动生成器即可。

设计用于生成随机位的LFSR的一个问题是,对于一个给定的LFSR,可生成最长的无重复序列位是多少。

RC4:

RC4的大小根据参数n的值而变化。RC4可以实现一个“秘密的内部状态”,对n位数,有N=2^n种可能,通常n=8。RC4可以生成总共有256个元素的数组S。RC4的每个输出都是数组S中的一个随机元素。要实现这些,需要两个处理过程:一个是“密钥调度算法”(key-scheduling algorithm,KSA),用来设置S的初始排列;一个是“伪随机生成算法”(pseudo random-generation algorithm,PRGA),用来选取随机元素并修改S的原始排序顺序。

时间: 2024-07-30 10:16:52

流加密法的相关文章

Pascal ASCII和文本的转换

用于帮助新手理解ASCII码和字符型与整型的一段小程序,转载请注明出处 例如:输入 I love you 打印 73 32 108 111 118 101 32 121 111 117 13 10 Program TransPro (input,output);Var  judge,number:integer;  letter:char;begin  writeln('This software was produced by Chaobs!');  writeln('You can use

对IO流的操作(文件大小,拷贝,移动,删除)

import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.SequenceInputStream; class LjyFileClass { /*LjyFileClass工具类使用需知: * * 1.计算

hdu3461Marriage Match IV 最短路+最大流

//给一个图.给定起点和终点,仅仅能走图上的最短路 //问最多有多少种走的方法.每条路仅仅能走一次 //仅仅要将在最短路上的全部边的权值改为1.求一个最大流即可 #include<cstdio> #include<cstring> #include<iostream> #include<queue> #include<vector> using namespace std ; const int inf = 0x3f3f3f3f ; const

Java学习之IO流三

1.从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中(高效流) 1 /** 2 * 1.从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中 3 * @author vanguard 4 * 5 */ 6 public class Demo01 { 7 public static void main(String[] args) { 8 //键盘输入两个文件夹路径 9 Scanner sc = new Scanner(System.in); 1

标准文档流

标准流指的是在不使用其他的与排列和定位相关的特殊CSS规则时,各种元素的排列规则.HTML文档中的元素可以分为两大类:行内元素和块级元素.       1.行内元素不占据单独的空间,依附于块级元素,行内元素没有自己的区域.它同样是DOM树中的一个节点,在这一点上行内元素和块级元素是没有区别的.       2.块级元素总是以块的形式表现出来,并且跟同级的兄弟块依次竖直排列,左右自动伸展,直到包含它的元素的边界,在水平方向不能并排.盒子在标准流中的定位原则margin控制的是盒子与盒子之间的距离,

Properties-转换流-打印流-序列化和反序列化-Commons-IO工具类

一.Properties 类(java.util)     概述:Properties 是一个双列集合;Properties 属于map的特殊的孙子类;Properties 类没有泛型,properties集合的key和value都是固定的数据类型(String),该集合提供了一些特有的方法存取值,是唯一一个可以与IO流相结合的集合; 定义:public class Properties extends Hashtable

14. 流、文件和IO

前言 InputStream/OutStream流用来处理设备之间的数据传输 Java.io 包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io 包中的流支持很多种格式,比如:基本类型.对象.本地化字符集等等. 一个流可以理解为一个数据的序列.输入流表示从一个源读取数据,输出流表示向一个目标写数据. 流按操作数据分为两种:字节流与字符流 按流向分为:输入流(InputStream)和输出流(OutputStream) Java 为 I/O 提供了强大的而

videojs集成--播放rtmp流

之前说到已经把流推送过来了,这时候就可以使用videojs来进行显示播放. 首先要先有一个文件,那就是video-js.swf 因为,这种播放方式html已经不能很好的进行播放了,需要用到flash来播放,videojs在这个地方就用到了这个. 代码就是下面这样. 里面一些细节注释都有. 重点就是看<video>标签里面的内容 [html] view plain copy <!DOCTYPE html> <html lang="en"> <he

快速入门系列--WCF--06并发限流、可靠会话和队列服务

这部分将介绍一些相对深入的知识点,包括通过并发限流来保证服务的可用性,通过可靠会话机制保证会话信息的可靠性,通过队列服务来解耦客户端和服务端,提高系统的可服务数量并可以起到削峰的作用,最后还会对之前的事务知识做一定补充. 对于WCF服务来说,其寄宿在一个资源有限的环境中,为了实现服务性能最大化,需要提高其吞吐量即服务的并发性.然而在不进行流量控制的情况下,并发量过多,会使整个服务由于资源耗尽而崩溃.因此为相对平衡的并发数和系统可用性,需要设计一个闸门(Throttling)控制并发的数量. 由于