当前位置:首页 » 操作系统 » 放码算法

放码算法

发布时间: 2022-08-01 10:17:17

A. 有谁知道,JPEG压缩编码算法的主要步骤

JPEG压缩编码算法的主要计算步骤如下:

1.正向离散余弦变换(FDCT)。

2.量化(quantization)。

3.Z字形编码(zigzag scan)。

4.使用差分脉冲编码调制(differential pulse code molation,DPCM)对直流系数(DC)进行编码。

5.使用行程长度编码(run-length encoding,RLE)对交流系数(AC)进行编码。

6.熵编码(entropy coding)。

2. 量化

量化是对经过FDCT变换后的频率系数进行量化。量化的目的是减小非“0”系数的幅度以及增加“0”值系数的数目。量化是图像质量下降的最主要原因。

对于有损压缩算法,JPEG算法使用均匀量化器进行量化,量化步距是按照系数所在的位置和每种颜色分量的色调值来确定。因为人眼对亮度信号比对色差信号更敏感,因此使用了两种量化表:亮度量化值和色差量化值。此外,由于人眼对低频分量的图像比对高频分量的图像更敏感,因此图中的左上角的量化步距要比右下角的量化步距小。

3. Z字形编排

量化后的系数要重新编排,目的是为了增加连续的“0”系数的个数,就是“0”的游程长度,方法是按照Z字形的式样编排,如图5-17所示。这样就把一个8 ? 8的矩阵变成一个1 ? 64的矢量,频率较低的系数放在矢量的顶部。

4. 直流系数的编码

8 ? 8图像块经过DCT变换之后得到的DC直流系数有两个特点,一是系数的数值比较大,二是相邻8 ? 8图像块的DC系数值变化不大。根据这个特点,JPEG算法使用了差分脉冲调制编码(DPCM)技术,对相邻图像块之间量化DC系数的差值(Delta)进行编码,

Delta=DC(0, 0)k-DC(0, 0)k-1 ........ (5-5)

5. 交流系数的编码

量化AC系数的特点是1 ? 64矢量中包含有许多“0”系数,并且许多“0”是连续的,因此使用非常简单和直观的游程长度编码(RLE)对它们进行编码。

JPEG使用了1个字节的高4位来表示连续“0”的个数,而使用它的低4位来表示编码下一个非“0”系数所需要的位数,跟在它后面的是量化AC系数的数值。

6. 熵编码

使用熵编码还可以对DPCM编码后的直流DC系数和RLE编码后的交流AC系数作进一步的压缩。

在JPEG有损压缩算法中,使用霍夫曼编码器来减少熵。使用霍夫曼编码器的理由是可以使用很简单的查表(lookup table)方法进行编码。压缩数据符号时,霍夫曼编码器对出现频度比较高的符号分配比较短的代码,而对出现频度较低的符号分配比较长的代码。这种可变长度的霍夫曼码表可以事先进行定义。

B. 求纯C语言的加密解密算法编码(AES、DES。。。。。。)

请选择参考资料的网页
BeeCrypt 是一个包含高度优化的C语言加密库,包括MD5,SHA-等多种加密解密算法,该库是通用函数库,并与任何版权无关。符合GNU开放源码要求

点击下列连接可以直接下载源代码

http://prdownloads.sourceforge.net/beecrypt/beecrypt-4.1.2.tar.gz?download

C. 量出上胸围和下胸围尺码怎么算法

一、文胸尺码测量 第一步:首先知道自己的下胸围 首先你要量出自己的上胸围和下胸围(75A中的75就是指下胸围),乳房下垂者应把乳房推高至正常位置测量,下胸围的可用标号有:70、75、80、85、90、95、100、105cm。 第二步:确定文罩的罩杯 罩杯的大小就是上胸围减去下胸围的差。一般来说,在10cm左右选择A罩杯,12.5cm左右选择B罩杯,15cm左右选择C罩杯,17.5cm左右选择D罩杯,20cm左右选择E罩杯,20cm以上选择F罩杯。 文胸尺码表 下胸围 上胸围 上下胸围之差距 杯型 尺码 70cm 80cm 10cm左右 A 70A 70cm 82.5cm 12.5cm左右 B 70B 70cm 85cm 15cm左右 C 70C 75cm 85cm 10cm左右 A 75A 75cm 87.5cm 12.5cm左右 B 75B 75cm 90cm 15cm左右 C 75C 80cm 90cm 10cm左右 A 80A 80cm 92.5cm 12.5cm左右 B 80B 80cm 95cm 15cm左右 C 80C 85cm 95cm 10cm左右 A 85A 85cm 97.5cm 12.5cm左右 B 85B 85cm 100cm 15cm左右 C 85C 90cm 100cm 10cm左右 A 90A 90cm 102.5cm 12.5cm左右 B 90B 90cm 105cm 15cm左右 C 90C 文胸的穿着: 第一步:穿文胸时要上身前倾,双手套入肩带,待脂肪导引归位后,穿上肩带。 第二步:逐渐缩紧肩带,肩带缩紧到你用一个手指插入肩带内感觉有点紧压感就OK了。利用缩紧肩带可提升乳房,让胸部显得坚挺,乳房提升到你的手肘到肩膀这段距离的中间位置效果最佳。 第三步:身体前倾弯腰45度,让乳房呈自然下垂状,然后用手把肋骨和乳房下沿多余的脂肪轻轻地拨到罩杯内,尽量往胸部聚拢。这样不但能避免两肋和腹部脂肪的堆积,还能使乳房显得更丰满、圆润。 第四步:再稍调整一下后面的扣环,以最舒服的感觉为准,最后将文胸两侧拉平。 文胸的保护: 1、如果文胸的标签上没有注明必须手洗,则可以机洗,但一定要注意用洗衣机洗涤文胸三分钟足亦。长时间洗涤容易导致衣物变色或染色。此外,要按照标签的指示,将文胸放入洗衣网内清洗,数量以洗衣网的一半容量为限,同时,将有软圈及没有软圈的文胸分开洗涤,目的是避免损坏其他衣物。 2、首先要注意胸罩清洁,污垢不单意味着不干净、更会影响胸罩面料的透气性能。所以最好是用温水及中性洗剂洗涤,或用冷水或比体温略低(30℃以下)的温水洗涤,切勿使用热水。应以“轻按”的方式手洗,胸罩不能过分挤压,以免弄皱。特别是有钢圈的胸罩,不要用力扭。可使用一般的中性洗剂或内衣专用的中性洗剂。 3、使用洗剂要适量,过多的洗剂会为质料带来负担,从而损坏胸罩。应先将洗剂完全溶于30~40℃的温水中。完全溶解后,才可放入胸罩,洗剂不可直接沾于胸罩上,这会导致胸罩颜色不均匀。 4、千万不要使用漂白剂,含氯漂白剂会损坏质料并使其变黄。同时不能用热水,热水会让文胸弹性减弱,强碱性的洗衣粉碱性太强,会让文胸泛黄,很难看。 5、特别脏的地方不要用小刷子刷,而要利用内衣自身的质料互相磨擦,即可完全去除污渍。使用洗衣机时请使用洗衣网洗涤。避免与外衣共洗,以免造成不洁;也不要与深色衣物混在一起洗涤,以免造成串色。一定记住以“轻按”的方式手洗 、不要用力扭。罩杯部分只需用水轻轻洗即可。尤其是定型模杯,一定不能抓揉!软杯的就没什么问题。

D. 计算机的,反码,原码,补码!求它们的计算方法

在计算机系统中,数值,一律用补码来表示和存放。

原码和反码,在计算机中,都是不存在的。

使用补码代表正负数值,可将负数,转换成正数来计算。

这就可以节省硬件,只用加法器,便可实现加减法运算。

补码,是是什么意思?这得从【补数】谈起。

计算机所计算的位数,是固定的,如八位机。。。

位数限定之后,其计数范围,就有了周期性。

如两位十进制 0~99,周期就是 100(一百)。

那么,减一,就可以用 +99 代替:

25 - 1 = 24

25 + 99 = (一百) 24

舍弃进位,只取两位,这两种算法,功能就是相同的。

这就用正数,代替了负数!用加法,就实现了减法运算!

99,就是-1 的补数。计算公式:补数 = 周期 + 负数。

学过三角函数的同学,都知道,函数周期是:2π(360°)。

那么-90°,也可以+270° 来计算。这也是同样的道理。

一个负角度,怎么计算出“等效的正角度”,大家都会。

-------------------------

计算机用二进制,补数,就改称为:补码

八位二进制:0000 0000 ~ 1111 1111。

对应十进制:0 ~ 255。

计数周期是:2^8 = 256。

那么,

-1 的补码是 256 + (-1) = 255 = 1111 1111(二进制)。

-2 的补码是:254 = 1111 1110。

。。。

-128 的补码是:128 = 1000 0000。

用不存在的“原码反码取反加一”来求,也是这个结果。

求负数补码的计算公式,也是: 周期 + 该负数。

正数,也可以使用这个公式。但是,计算后,这个周期的数值,

超出了计数范围,就略去了。最后,还是这个正数。

-------------------------

例如: 7-3 = 4。

补码的计算过程如下:

7 的补码=0000 0111

-3的补码=1111 1101

--相加-------------

(1)0000 0100= 4 的补码

舍弃进位,只保留八位作为结果,就求出了 7-3。

-------------------------

原码和反码,在计算机中,都是不存在的,无用的。

它们不过是,计算机老师捧在手中的饭碗而已。

E. 如何进行MD5验证

我认为:
MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L. Rivest开发出来,经MD2、MD3和MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是MD2、MD4还是MD5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。虽然这些算法的结构或多或少有些相似,但MD2的设计与MD4和MD5完全不同,那是因为MD2是为8位机器做过设计优化的,而MD4和MD5却是面向32位的电脑。这三个算法的描述和C语言源代码在Internet RFCs 1321中有详细的描述http://www.ietf.org/rfc/rfc1321.txt),这是一份最权威的文档,由Ronald L. Rivest在1992年8月向IEFT提交。

Rivest在1989年开发出MD2算法。在这个算法中,首先对信息进行数据补位,使信息的字节长度是16的倍数。然后,以一个16位的检验和追加到信息末尾。并且根据这个新产生的信息计算出散列值。后来,Rogier和Chauvaud发现如果忽略了检验和将产生MD2冲突。MD2算法的加密后结果是唯一的--既没有重复。

为了加强算法的安全性,Rivest在1990年又开发出MD4算法。MD4算法同样需要填补信息以确保信息的字节长度加上448后能被512整除(信息字节长度mod 512 = 448)。然后,一个以64位二进制表示的信息的最初长度被添加进来。信息被处理成512位Damg?rd/Merkle迭代结构的区块,而且每个区块要通过三个不同步骤的处理。Den Boer和Bosselaers以及其他人很快的发现了攻击MD4版本中第一步和第三步的漏洞。Dobbertin向大家演示了如何利用一部普通的个人电脑在几分钟内找到MD4完整版本中的冲突(这个冲突实际上是一种漏洞,它将导致对不同的内容进行加密却可能得到相同的加密后结果)。毫无疑问,MD4就此被淘汰掉了。

尽管MD4算法在安全上有个这么大的漏洞,但它对在其后才被开发出来的好几种信息安全加密算法的出现却有着不可忽视的引导作用。除了MD5以外,其中比较有名的还有SHA-1、RIPE-MD以及HAVAL等。

一年以后,即1991年,Rivest开发出技术上更为趋近成熟的MD5算法。它在MD4的基础上增加了"安全-带子"(Safety-Belts)的概念。虽然MD5比MD4稍微慢一些,但却更为安全。这个算法很明显的由四个和MD4设计有少许不同的步骤组成。在MD5算法中,信息-摘要的大小和填充的必要条件与MD4完全相同。Den Boer和Bosselaers曾发现MD5算法中的假冲突(Pseudo-Collisions),但除此之外就没有其他被发现的加密后结果了。

Van Oorschot和Wiener曾经考虑过一个在散列中暴力搜寻冲突的函数(Brute-Force Hash Function),而且他们猜测一个被设计专门用来搜索MD5冲突的机器(这台机器在1994年的制造成本大约是一百万美元)可以平均每24天就找到一个冲突。但单从1991年到2001年这10年间,竟没有出现替代MD5算法的MD6或被叫做其他什么名字的新算法这一点,我们就可以看出这个瑕疵并没有太多的影响MD5的安全性。上面所有这些都不足以成为MD5的在实际应用中的问题。并且,由于MD5算法的使用不需要支付任何版权费用的,所以在一般的情况下(非绝密应用领域。但即便是应用在绝密领域内,MD5也不失为一种非常优秀的中间技术),MD5怎么都应该算得上是非常安全的了。

F. 为什么CLO 3D自动放码衣服会穿模

,CLO还可以生成帽子,箱包,钱包,内衣,泳衣等一切由面料制成的东西,CLO复杂算法可以模拟织物的物理性质,以精确地想象它们在现实生活中的样子

G. 加密解密字符串的算法原理

我们经常需要一种措施来保护我们的数据,防止被一些怀有不良用心的人所看到或者破坏。在信息时代,信息可以帮助团体或个人,使他们受益,同样,信息也可以用来对他们构成威胁,造成破坏。在竞争激烈的大公司中,工业间谍经常会获取对方的情报。因此,在客观上就需要一种强有力的安全措施来保护机密数据不被窃取或篡改。数据加密与解密从宏观上讲是非常简单的,很容易理解。加密与解密的一些方法是非常直接的,很容易掌握,可以很方便的对机密数据进行加密和解密。

一:数据加密方法

在传统上,我们有几种方法来加密数据流。所有这些方法都可以用软件很容易的实现,但是当我们只知道密文的时候,是不容易破译这些加密算法的(当同时有原文和密文时,破译加密算法虽然也不是很容易,但已经是可能的了)。最好的加密算法对系统性能几乎没有影响,并且还可以带来其他内在的优点。例如,大家都知道的pkzip,它既压缩数据又加密数据。又如,dbms的一些软件包总是包含一些加密方法以使复制文件这一功能对一些敏感数据是无效的,或者需要用户的密码。所有这些加密算法都要有高效的加密和解密能力。

幸运的是,在所有的加密算法中最简单的一种就是“置换表”算法,这种算法也能很好达到加密的需要。每一个数据段(总是一个字节)对应着“置换表”中的一个偏移量,偏移量所对应的值就输出成为加密后的文件。加密程序和解密程序都需要一个这样的“置换表”。事实上,80x86 cpu系列就有一个指令‘xlat’在硬件级来完成这样的工作。这种加密算法比较简单,加密解密速度都很快,但是一旦这个“置换表”被对方获得,那这个加密方案就完全被识破了。更进一步讲,这种加密算法对于黑客破译来讲是相当直接的,只要找到一个“置换表”就可以了。这种方法在计算机出现之前就已经被广泛的使用。

对这种“置换表”方式的一个改进就是使用2个或者更多的“置换表”,这些表都是基于数据流中字节的位置的,或者基于数据流本身。这时,破译变的更加困难,因为黑客必须正确的做几次变换。通过使用更多的“置换表”,并且按伪随机的方式使用每个表,这种改进的加密方法已经变的很难破译。比如,我们可以对所有的偶数位置的数据使用a表,对所有的奇数位置使用b表,即使黑客获得了明文和密文,他想破译这个加密方案也是非常困难的,除非黑客确切的知道用了两张表。

与使用“置换表”相类似,“变换数据位置”也在计算机加密中使用。但是,这需要更多的执行时间。从输入中读入明文放到一个buffer中,再在buffer中对他们重排序,然后按这个顺序再输出。解密程序按相反的顺序还原数据。这种方法总是和一些别的加密算法混合使用,这就使得破译变的特别的困难,几乎有些不可能了。例如,有这样一个词,变换起字母的顺序,slient 可以变为listen,但所有的字母都没有变化,没有增加也没有减少,但是字母之间的顺序已经变化了。

但是,还有一种更好的加密算法,只有计算机可以做,就是字/字节循环移位和xor操作。如果我们把一个字或字节在一个数据流内做循环移位,使用多个或变化的方向(左移或右移),就可以迅速的产生一个加密的数据流。这种方法是很好的,破译它就更加困难!而且,更进一步的是,如果再使用xor操作,按位做异或操作,就就使破译密码更加困难了。如果再使用伪随机的方法,这涉及到要产生一系列的数字,我们可以使用fibbonaci数列。对数列所产生的数做模运算(例如模3),得到一个结果,然后循环移位这个结果的次数,将使破译次密码变的几乎不可能!但是,使用fibbonaci数列这种伪随机的方式所产生的密码对我们的解密程序来讲是非常容易的。

在一些情况下,我们想能够知道数据是否已经被篡改了或被破坏了,这时就需要产生一些校验码,并且把这些校验码插入到数据流中。这样做对数据的防伪与程序本身都是有好处的。但是感染计算机程序的病毒才不会在意这些数据或程序是否加过密,是否有数字签名。所以,加密程序在每次load到内存要开始执行时,都要检查一下本身是否被病毒感染,对与需要加、解密的文件都要做这种检查!很自然,这样一种方法体制应该保密的,因为病毒程序的编写者将会利用这些来破坏别人的程序或数据。因此,在一些反病毒或杀病毒软件中一定要使用加密技术。

循环冗余校验是一种典型的校验数据的方法。对于每一个数据块,它使用位循环移位和xor操作来产生一个16位或32位的校验和 ,这使得丢失一位或两个位的错误一定会导致校验和出错。这种方式很久以来就应用于文件的传输,例如 xmodem-crc。 这是方法已经成为标准,而且有详细的文档。但是,基于标准crc算法的一种修改算法对于发现加密数据块中的错误和文件是否被病毒感染是很有效的。

二.基于公钥的加密算法

一个好的加密算法的重要特点之一是具有这种能力:可以指定一个密码或密钥,并用它来加密明文,不同的密码或密钥产生不同的密文。这又分为两种方式:对称密钥算法和非对称密钥算法。所谓对称密钥算法就是加密解密都使用相同的密钥,非对称密钥算法就是加密解密使用不同的密钥。非常着名的pgp公钥加密以及rsa加密方法都是非对称加密算法。加密密钥,即公钥,与解密密钥,即私钥,是非常的不同的。从数学理论上讲,几乎没有真正不可逆的算法存在。例如,对于一个输入‘a’执行一个操作得到结果‘b’,那么我们可以基于‘b’,做一个相对应的操作,导出输入‘a’。在一些情况下,对于每一种操作,我们可以得到一个确定的值,或者该操作没有定义(比如,除数为0)。对于一个没有定义的操作来讲,基于加密算法,可以成功地防止把一个公钥变换成为私钥。因此,要想破译非对称加密算法,找到那个唯一的密钥,唯一的方法只能是反复的试验,而这需要大量的处理时间。

rsa加密算法使用了两个非常大的素数来产生公钥和私钥。即使从一个公钥中通过因数分解可以得到私钥,但这个运算所包含的计算量是非常巨大的,以至于在现实上是不可行的。加密算法本身也是很慢的,这使得使用rsa算法加密大量的数据变的有些不可行。这就使得一些现实中加密算法都基于rsa加密算法。pgp算法(以及大多数基于rsa算法的加密方法)使用公钥来加密一个对称加密算法的密钥,然后再利用一个快速的对称加密算法来加密数据。这个对称算法的密钥是随机产生的,是保密的,因此,得到这个密钥的唯一方法就是使用私钥来解密。

我们举一个例子:假定现在要加密一些数据使用密钥‘12345’。利用rsa公钥,使用rsa算法加密这个密钥‘12345’,并把它放在要加密的数据的前面(可能后面跟着一个分割符或文件长度,以区分数据和密钥),然后,使用对称加密算法加密正文,使用的密钥就是‘12345’。当对方收到时,解密程序找到加密过的密钥,并利用rsa私钥解密出来,然后再确定出数据的开始位置,利用密钥‘12345’来解密数据。这样就使得一个可靠的经过高效加密的数据安全地传输和解密。

一些简单的基于rsa算法的加密算法可在下面的站点找到:

ftp://ftp.funet.fi/pub/crypt/cryptography/asymmetric/rsa

三.一个崭新的多步加密算法

现在又出现了一种新的加密算法,据说是几乎不可能被破译的。这个算法在1998年6月1日才正式公布的。下面详细的介绍这个算法:

使用一系列的数字(比如说128位密钥),来产生一个可重复的但高度随机化的伪随机的数字的序列。一次使用256个表项,使用随机数序列来产生密码转表,如下所示:

把256个随机数放在一个距阵中,然后对他们进行排序,使用这样一种方式(我们要记住最初的位置)使用最初的位置来产生一个表,随意排序的表,表中的数字在0到255之间。如果不是很明白如何来做,就可以不管它。但是,下面也提供了一些原码(在下面)是我们明白是如何来做的。现在,产生了一个具体的256字节的表。让这个随机数产生器接着来产生这个表中的其余的数,以至于每个表是不同的。下一步,使用"shotgun technique"技术来产生解码表。基本上说,如果 a映射到b,那么b一定可以映射到a,所以b[a[n]] = n.(n是一个在0到255之间的数)。在一个循环中赋值,使用一个256字节的解码表它对应于我们刚才在上一步产生的256字节的加密表。

使用这个方法,已经可以产生这样的一个表,表的顺序是随机,所以产生这256个字节的随机数使用的是二次伪随机,使用了两个额外的16位的密码.现在,已经有了两张转换表,基本的加密解密是如下这样工作的。前一个字节密文是这个256字节的表的索引。或者,为了提高加密效果,可以使用多余8位的值,甚至使用校验和或者crc算法来产生索引字节。假定这个表是256*256的数组,将会是下面的样子:

crypto1 = a[crypto0][value]

变量'crypto1'是加密后的数据,'crypto0'是前一个加密数据(或着是前面几个加密数据的一个函数值)。很自然的,第一个数据需要一个“种子”,这个“种子” 是我们必须记住的。如果使用256*256的表,这样做将会增加密文的长度。或者,可以使用你产生出随机数序列所用的密码,也可能是它的crc校验和。顺便提及的是曾作过这样一个测试: 使用16个字节来产生表的索引,以128位的密钥作为这16个字节的初始的"种子"。然后,在产生出这些随机数的表之后,就可以用来加密数据,速度达到每秒钟100k个字节。一定要保证在加密与解密时都使用加密的值作为表的索引,而且这两次一定要匹配。

加密时所产生的伪随机序列是很随意的,可以设计成想要的任何序列。没有关于这个随机序列的详细的信息,解密密文是不现实的。例如:一些ascii码的序列,如“eeeeeeee"可能被转化成一些随机的没有任何意义的乱码,每一个字节都依赖于其前一个字节的密文,而不是实际的值。对于任一个单个的字符的这种变换来说,隐藏了加密数据的有效的真正的长度。

如果确实不理解如何来产生一个随机数序列,就考虑fibbonacci数列,使用2个双字(64位)的数作为产生随机数的种子,再加上第三个双字来做xor操作。 这个算法产生了一系列的随机数。算法如下:

unsigned long dw1, dw2, dw3, dwmask;

int i1;

unsigned long arandom[256];

dw1 = {seed #1};

dw2 = {seed #2};

dwmask = {seed #3};

// this gives you 3 32-bit "seeds", or 96 bits total

for(i1=0; i1 < 256; i1++)

{

dw3 = (dw1 + dw2) ^ dwmask;

arandom[i1] = dw3;

dw1 = dw2;

dw2 = dw3;

}

如果想产生一系列的随机数字,比如说,在0和列表中所有的随机数之间的一些数,就可以使用下面的方法:

int __cdecl mysortproc(void *p1, void *p2)

{

unsigned long **pp1 = (unsigned long **)p1;

unsigned long **pp2 = (unsigned long **)p2;

if(**pp1 < **pp2)

return(-1);

else if(**pp1 > *pp2)

return(1);

return(0);

}

...

int i1;

unsigned long *aprandom[256];

unsigned long arandom[256]; // same array as before, in this case

int aresult[256]; // results go here

for(i1=0; i1 < 256; i1++)

{

aprandom[i1] = arandom + i1;

}

// now sort it

qsort(aprandom, 256, sizeof(*aprandom), mysortproc);

// final step - offsets for pointers are placed into output array

for(i1=0; i1 < 256; i1++)

{

aresult[i1] = (int)(aprandom[i1] - arandom);

}

...

变量'aresult'中的值应该是一个排过序的唯一的一系列的整数的数组,整数的值的范围均在0到255之间。这样一个数组是非常有用的,例如:对一个字节对字节的转换表,就可以很容易并且非常可靠的来产生一个短的密钥(经常作为一些随机数的种子)。这样一个表还有其他的用处,比如说:来产生一个随机的字符,计算机游戏中一个物体的随机的位置等等。上面的例子就其本身而言并没有构成一个加密算法,只是加密算法一个组成部分。

作为一个测试,开发了一个应用程序来测试上面所描述的加密算法。程序本身都经过了几次的优化和修改,来提高随机数的真正的随机性和防止会产生一些短的可重复的用于加密的随机数。用这个程序来加密一个文件,破解这个文件可能会需要非常巨大的时间以至于在现实上是不可能的。

四.结论:

由于在现实生活中,我们要确保一些敏感的数据只能被有相应权限的人看到,要确保信息在传输的过程中不会被篡改,截取,这就需要很多的安全系统大量的应用于政府、大公司以及个人系统。数据加密是肯定可以被破解的,但我们所想要的是一个特定时期的安全,也就是说,密文的破解应该是足够的困难,在现实上是不可能的,尤其是短时间内。

H. 什么是视频编码的算法 它有哪几种典型的算法 试比较各种典型的视频编码算法。 谢谢了!

1、无声时代的FLC
FLC、FLI是Autodesk开发的一种视频格式,仅仅支持256色,但支持色彩抖动技术,因此在很多情况下很真彩视频区别不是很大,不支持音频信号,现在看来这种格式已经毫无用处,但在没有真彩显卡没有声卡的DOS时代确实是最好的也是唯一的选择。最重要的是,Autodesk的全系列的动画制作软件都提供了对这种格式的支持,包括着名的3D Studio X,因此这种格式代表了一个时代的视频编码水平。直到今日,仍旧有不少视频编辑软件可以读取和生成这种格式。但毕竟廉颇老矣,这种格式已经被无情的淘汰。

2、载歌载舞的AVI
AVI——Audio Video Interleave,即音频视频交叉存取格式。1992年初Microsoft公司推出了AVI技术及其应用软件VFW(Video for Windows)。在AVI文件中,运动图像和伴音数据是以交织的方式存储,并独立于硬件设备。这种按交替方式组织音频和视像数据的方式可使得读取视频数据流时能更有效地从存储媒介得到连续的信息。构成一个AVI文件的主要参数包括视像参数、伴音参数和压缩参数等。AVI文件用的是AVI RIFF形式,AVI RIFF形式由字串“AVI”标识。所有的AVI文件都包括两个必须的LIST块。这些块定义了流和数据流的格式。AVI文件可能还包括一个索引块。
只要遵循这个标准,任何视频编码方案都可以使用在AVI文件中。这意味着AVI有着非常好的扩充性。这个规范由于是由微软制定,因此微软全系列的软件包括编程工具VB、VC都提供了最直接的支持,因此更加奠定了AVI在PC上的视频霸主地位。由于AVI本身的开放性,获得了众多编码技术研发商的支持,不同的编码使得AVI不断被完善,现在几乎所有运行在PC上的通用视频编辑系统,都是以支持AVI为主的。AVI的出现宣告了PC上哑片时代的结束,不断完善的AVI格式代表了多媒体在PC上的兴起。
说到AVI就不能不提起英特尔公司的Indeo video系列编码,Indeo编码技术是一款用于PC视频的高性能的、纯软件的视频压缩/解压解决方案。Indeo音频软件能提供高质量的压缩音频,可用于互联网、企业内部网和多媒体应用方案等。它既能进行音乐压缩也能进行声音压缩,压缩比可达8:1而没有明显的质量损失。Indeo技术能帮助您构建内容更丰富的多媒体网站。目前被广泛用于动态效果演示、游戏过场动画、非线性素材保存等用途,是目前使用最广泛的一种AVI编码技术。现在Indeo编码技术及其相关软件产品已经被Ligos Technology 公司收购。随着MPEG的崛起,Indeo面临着极大的挑战。

3、容量与质量兼顾的MPEG系列编码
和AVI相反,MPEG不是简单的一种文件格式,而是编码方案。
MPEG-1(标准代号ISO/IEC11172)制定于1991年底,处理的是标准图像交换格式(standard interchange format,SIF)或者称为源输入格式(Source Input Format,SIF)的多媒体流。是针对1.5Mbps以下数据传输率的数字存储媒质运动图像及其伴音编码(MPEG-1 Audio,标准代号ISO/IEC 11172-3)的国际标准,伴音标准后来衍生为今天的MP3编码方案。MPEG-1规范了PAL制(352*288,25帧/S)和NTSC制(为352*240,30帧/S)模式下的流量标准, 提供了相当于家用录象系统(VHS)的影音质量,此时视频数据传输率被压缩至1.15Mbps,其视频压缩率为26∶1。使用MPEG-1的压缩算法,可以把一部120分钟长的多媒体流压缩到1.2GB左右大小。常见的VCD就是MPEG-1编码创造的杰作。MPEG-1编码也不一定要按PAL/NTSC规范的标准运行,你可以自由设定影像尺寸和音视频流量。随着光头拾取精度的提高,有人把光盘的信息密度加大,并适度降低音频流流量,于是出现了只要一张光盘就存放一部电影的DVCD。DVCD碟其实是一种没有行业标准,没有国家标准,更谈不上是国际标准的音像产品。
当VCD开始向市场普及时,电脑正好进入了486时代,当年不少朋友都梦想拥有一块硬解压卡,来实现在PC上看VCD的夙愿,今天回过头来看看,觉得真有点不可思议,但当时的现状就是486的系统不借助硬解压是无法流畅播放VCD的,上万元的486系统都无法流畅播放的MPEG-1被打上了贵族的标志。随着奔腾的发布,PC开始奔腾起来,直到后来Windows Media Player也直接提供了MPEG-1的支持,至此MPEG-1使用在PC上已经完全无障碍了。
MPEG-2(标准代号IOS/IEC13818)于1994年发布国际标准草案(DIS),在视频编码算法上基本和MPEG-1相同,只是有了一些小小的改良,例如增加隔行扫描电视的编码。它追求的是大流量下的更高质量的运动图象及其伴音效果。MPEG-2的视频质量看齐PAL或NTSC的广播级质量,事实上MPEG-1也可以做到相似效果,MPEG-2更多的改进来自音频部分的编码。目前最常见的MPEG-2相关产品就是DVD了,SVCD也是采用的MPEG-2的编码。MPEG-2还有一个更重要的用处,就是让传统的电视机和电视广播系统往数码的方向发展。
MPEG-3最初为HDTV制定,由于MPEG-2的快速发展,MPEG-3还未彻底完成便宣告淘汰。
MPEG-4于1998年公布,和MPEG-2所针对的不同,MPEG-4追求的不是高品质而是高压缩率以及适用于网络的交互能力。MPEG-4提供了非常惊人的压缩率,如果以VCD画质为标准,MPEG-4可以把120分钟的多媒体流压缩至300M。MPEG-4标准主要应用于视像电话(Video Phone),视像电子邮件(Video Email)和电子新闻(Electronic News)等,其传输速率要求较低,在4800-64000bits/sec之间,分辨率为176X144。MPEG-4利用很窄的带宽,通过帧重建技术,压缩和传输数据,以求以最少的数据获得最佳的图象质量。
MJPEG,这并不是专门为PC准备的,而是为专业级甚至广播级的视频采集与在设备端回放的准备的,所以MJPEG包含了为传统模拟电视优化的隔行扫描电视的算法,如果在PC上播放MJPEG编码的文件,效果会很难看(如果你的显卡不支持MJPEG的动态补偿),但一旦输出到电视机端,你立刻会发现这种算法的好处。

4、属于网络的流媒体
RealNetworks RealVideo,采用的是 RealNetworks 公司自己开发的 Real G2 Codec,它具有很多先进的设计,例如,SVT (Scalable Video Technology);双向编码(Two—Encoding,类似于VBR)。RealMedia 音频部分采用的是 RealAudio ,可以接纳很多音频编码方案,可实现声音在单声道、立体声音乐不同速率下的压缩。最新的RealAudio竟然采用ATRAC3编码方案,以挑战日益成熟的MP3。
Windows Media,视频编码采用的是非常先进的 MPEG-4 视频压缩技术,被称作 Microsoft MPEG-4 Video Codec,音频编码采用的是微软自行开发的一种编码方案,目前没有公布技术资料,在低流量下提供了令人满意的音质和画质。最新的Windows Media Encoding Utility V8.0将流技术推向到一个新的高度,我们常见的ASF、WMV、WMA就是微软的流媒体文件。
事实上我们常见的MPG文件,也具有流媒体的最大特征——边读边放。

二、常见的编码与常见的文件格式的对应关系及其常用用途

1、Audodesk FLC
这是一种古老的编码方案,常见的文件后缀为FLC和FLI。由于FLC仅仅支持256色的调色板,因此它会在编码过程中尽量使用抖动算法(也可以设置不抖动),以模拟真彩的效果。这种算法在色彩值差距不是很大的情况下几乎可以达到乱真的地步,例如红色A(R:255,G:0,B:0)到红色B(R:255,G:128,B:0)之间的抖动。这种格式现在已经很少被采用了,但当年很多这种格式被保留下来,这种格式在保存标准256色调色板或者自定义256色调色板是是无损的,这种格式可以清晰到像素,非常适合保存线框动画,例如CAD模型演示。现在这种格式很少见了。

2、Microsoft RLE
这是微软开发为AVI格式开发的一种编码,文件扩展名为AVI,使用了RLE压缩算法,这是一种无损的压缩算法,我们常见的tga格式的图像文件就使用了RLE算法。
什么是RLE算法呢?这是一种很简单的算法,举一个很简单的例子:
假设一个图像的像素色彩值是这样排列的:红红红红红红红红红红红红蓝蓝蓝蓝蓝蓝绿绿绿绿,经过RLE压缩后就成为了:红12蓝6绿4。这样既保证了压缩的可行性,而且不会有损失。而且可以看到,但颜色数越少时,压缩效率会更高。由于Microsoft RLE仅仅支持256色,而且没有抖动算法,在色彩处理方面,FLC明显的比Microsoft RLE要好很多。当然这也不表示Microsoft RLE一无是处,和FLC一样,Microsoft RLE在处理相邻像素时也没有色染,可以清晰的表现网格。因此同样可以优秀的表现单色字体和线条。只要色彩不是很复杂,FLC能做的,Microsoft RLE也可以做到。由于AVI可以拥有一个音频流,而且Windows系统给与了直接的支持,Microsoft RLE最常用的用途是,在256色显示模式下,通过配合抓屏生成AVI的工具制作一个软件的操作演示过程,以达到图文并茂,形声兼备的效果。

3、Microsoft Video1
这也是由微软提供的一个AVI编码,任何Windows系统都自带了了它的Codec,这个编码支持真彩,画面质量很不错,Microsoft Video1的压缩效率非常低下,编码后的文件庞大得让人受不了。这个Microsoft Video1究竟有什么用呢?一般被用在保存一些没有渐变的小型视频素材方面。

4、Indeo video R3.2
这个编码由intel架构实验室开发,对应的文件格式是AVI,相对之前的流行的编码,Indeo video R3.2最大的特点就是高压缩比(当然,比起现在的压缩方案,实在是不值得一提),intel声称压缩比可达8:1而没有明显的质量损失,解码速度也非常快,对系统要求不高,由于Windows9X中自带Indeo video R3.2的Codec,所以Indeo video R3.2一度成为了最流行的AVI编码方案。有不少游戏的过场动画和启动动画都是Indeo video R3.2编码的。Indeo video R3.2同样不适合高要求的环境,在要表现细线条或大色彩值变化的渐变时,Indeo video R3.2会表现得非常糟糕。如果画面的色彩值差异不是很大,也没有明显的色彩区域界限,Indeo video R3.2还是合适的,例如海天一色的场景。Indeo video R3.2已经基本被淘汰,如果不是为了播放以前遗留的一些Indeo video R3.2编码视频,恐怕Windows ME/2000都不会有Indeo video R3.2的Codec了。

5、Indeo video 5.10
这个编码方案同样也是intel架构实验室开发的,它继承了Indeo video R3.2的优点,对应的文件格式仍然是AVI,解码速度同样非常快。Windows ME/2000自带了Indeo video 5.1的Codec,很多游戏也适用Indeo video 5.10来编码自己的演示动画。在没有DivX普及前,这几乎是最流行的AVI编码了,由于微软和intel的同时支持,这种编码方案被广泛采用。

6、None
顾名思义,这是一个没有损失的视频编码方案,对应的文件扩展名为AVI。这种编码几乎是不压缩的,文件大得惊人!那么这种编码有什么用途呢?用途就是保存视频素材,因为是无损的,保存素材非常合适,代价就是大量的存储空间。

7、MPEG1
我们熟知的VCD就是MPEG1编码的,对应的文件扩展名为MPG、MPEG或者DAT。事实上MPEG1可以工作于非PAL制和非NTSC制标准下。它可以自由设置数据流量和画面尺寸,只是这样非标准的文件无法直接刻录成VCD。

8、MPEG2
DVD的视频部分就是采用的MPEG2,SVCD同样也采用了MPEG2编码。对应的文件扩展名一般为VOB、MPG。MPEG2的设计目标就是提供接近广播级的高品质输出。

9、DivX
DivX是近2年开始被大家认识的,DivX 视频编码技术可以说是一种对 DVD 造成威胁的新生视频压缩格式(有人说它是 DVD 杀手)对应的文件扩展名为AVI或者DivX,它由 Microsoft mpeg-4v3 修改而来,使用 MPEG-4 压缩算法。据说是美国禁止出口的编码技术。DivX最大的特点就是高压缩比和不错的画质,更可贵的是,DivX的对系统要求也不高,只要主频300的CPU就基本可以很流畅的播放了,因此从DivX诞生起,立刻吸引了大家的注意力。DivX拥有比Indeo video 5.10高太多的压缩效率,编码质量也远远比Indeo video 5.10好,我实在想不出Indeo video 5.10还会有什么前途。

10、PICVideo MJPEG
MJPEG是很多视频卡支持的一种视频编码,随卡提供了Codec,安装完成后可以象使用其它编码一样生成AVI文件。MJPEG编码常用于非线性系统,批上了一层很专业的外衣。MJPEG的编码质量是相当高的,是一种以质量为最高要求的编码,这种编码的设置比较复杂,可以得到很高的压缩比,但牺牲了解码速度,如果要保证解码速度,编码后的压缩比确不是很理想,如果您希望从专业的非线性系统上捕捉视频,然后自行进行处理,这种格式是很有必要去了解一些的。

11、RealNetworks RealVideo
REAL VIDEO(RA、RAM)格式由Real Networks公司开发的,一开始就定位在视频流应用方面的,也可以说是视频流技术的始创者。它可以在用 56K MODEM 拨号上网的条件实现不间断的视频播放。从RealVideo的定位来看,就是牺牲画面质量来换取可连续观看性。其实RealVideo也可以实现不错的画面质量,由于RealVideo可以拥有非常高的压缩效率,很多人把VCD编码成RealVideo格式的,这样一来,一张光盘上可以存放好几部电影。REAL VIDEO存在颜色还原不准确的问题,RealVideo就不太适合专业的场合,但RealVideo出色的压缩效率和支持流式播放的特征,使得RealVideo在网络和娱乐场合占有不错的市场份额。

12、Windows Media video
Windows Media video就是微软为了和现在的Real Networks的RealVideo竞争而发展出来的一种可以直接在网上观看视频节目的文件压缩格式!由于它使用了MPEG4的压缩算法,所以压缩率和图像的质量都很不错。我们经常看到的ASF和WMV就是Windows Media video。Windows Media video的编码质量明显好于RealVideo,因为Windows Media video是微软的杰作,所以Windows系统给Windows Media video给与了很好的支持,Windows Media Player可以直接播放这些文件。

各种主流音频编码(或格式)的介绍

1、PCM编码
PCM 脉冲编码调制是Pulse Code Molation的缩写。前面的文字我们提到了PCM大致的工作流程,我们不需要关心PCM最终编码采用的是什么计算方式,我们只需要知道PCM编码的音频流的优点和缺点就可以了。PCM编码的最大的优点就是音质好,最大的缺点就是体积大。我们常见的Audio CD就采用了PCM编码,一张光盘的容量只能容纳72分钟的音乐信息。

2、WAVE
这是一种古老的音频文件格式,由微软开发。WAV是一种文件格式,符合 PIFF Resource Interchange File Format规范。所有的WAV都有一个文件头,这个文件头音频流的编码参数。WAV对音频流的编码没有硬性规定,除了PCM之外,还有几乎所有支持ACM规范的编码都可以为WAV的音频流进行编码。很多朋友没有这个概念,我们拿AVI做个示范,因为AVI和WAV在文件结构上是非常相似的,不过AVI多了一个视频流而已。我们接触到的AVI有很多种,因此我们经常需要安装一些Decode才能观看一些AVI,我们接触到比较多的DivX就是一种视频编码,AVI可以采用DivX编码来压缩视频流,当然也可以使用其他的编码压缩。同样,WAV也可以使用多种音频编码来压缩其音频流,不过我们常见的都是音频流被PCM编码处理的WAV,但这不表示WAV只能使用PCM编码,MP3编码同样也可以运用在WAV中,和AVI一样,只要安装好了相应的Decode,就可以欣赏这些WAV了。
在Windows平台下,基于PCM编码的WAV是被支持得最好的音频格式,所有音频软件都能完美支持,由于本身可以达到较高的音质的要求,因此,WAV也是音乐编辑创作的首选格式,适合保存音乐素材。因此,基于PCM编码的WAV被作为了一种中介的格式,常常使用在其他编码的相互转换之中,例如MP3转换成WMA。

3、 MP3编码
请参阅 MP3全攻略 一文

4、OGG编码
网络上出现了一种叫Ogg Vorbis的音频编码,号称MP3杀手!Ogg Vorbis究竟什么来头呢?OGG是一个庞大的多媒体开发计划的项目名称,将涉及视频音频等方面的编码开发。整个OGG项目计划的目的就是向任何人提供完全免费多媒体编码方案!OGG的信念就是:OPEN!FREE!Vorbis这个词汇是特里·普拉特柴特的幻想小说《Small Gods》中的一个"花花公子"人物名。这个词汇成为了OGG项目中音频编码的正式命名。目前Vorbis已经开发成功,并且开发出了编码器。
Ogg Vorbis是高质量的音频编码方案,官方数据显示:Ogg Vorbis可以在相对较低的数据速率下实现比MP3更好的音质!Ogg Vorbis这种编码也远比90年代开发成功的MP3先进,她可以支持多声道,这意味着什么?这意味着Ogg Vorbis在SACD、DTSCD、DVD AUDIO抓轨软件(目前这种软件还没有)的支持下,可以对所有的声道进行编码,而不是MP3只能编码2个声道。多声道音乐的兴起,给音乐欣赏带来了革命性的变化,尤其在欣赏交响时,会带来更多临场感。这场革命性的变化是MP3无法适应的。
和MP3一样,Ogg Vorbis是一种灵活开放的音频编码,能够在编码方案已经固定下来后还能对音质进行明显的调节和新算法的改良。因此,它的声音质量将会越来越好,和MP3相似,Ogg Vorbis更像一个音频编码框架,可以不断导入新技术逐步完善。和MP3一样,OGG也支持VBR。

5、MPC 编码
MPC是又是另外一个令人刮目相看的实力派选手,它的普及过程非常低调,也没有什么复杂的背景故事,她的出现目的就只有一个,更小的体积更好的音质!MPC以前被称作MP+,很显然,可以看出她针对的竞争对手是谁。但是,只要用过这种编码的人都会有个深刻的印象,就是她出众的音质。

6、mp3PRO 编码
2001年6月14日,美国汤姆森多媒体公司(Thomson Multimedia SA)与佛朗赫弗协会(Fraunhofer Institute)于6月14日发布了一种新的音乐格式版本,名称为mp3PRO,这是一种基于mp3编码技术的改良方案,从官方公布的特征看来确实相当吸引人。从各方面的资料显示,mp3PRO并不是一种全新的格式,完全是基于传统mp3编码技术的一种改良,本身最大的技术亮点就在于SBR(Spectral Band Replication 频段复制),这是一种新的音频编码增强算法。它提供了改善低位率情况下音频和语音编码的性能的可能。这种方法可在指定的位率下增加音频的带宽或改善编码效率。SBR最大的优势就是在低数据速率下实现非常高效的编码,与传统的编码技术不同的是,SBR更像是一种后处理技术,因此解码器的算法的优劣直接影响到音质的好坏。高频实际上是由解码器(播放器)产生的,SBR编码的数据更像是一种产生高频的命令集,或者称为指导性的信号源,这有点駇idi的工作方式。我们可以看到,mp3PRO其实是一种mp3信号流和SBR信号流的混合数据流编码。有关资料显示,SBR技术可以改善低数据流量下的高频音质,改善程度约为30%,我们不管这个30%是如何得来的,但可以事先预知这种改善可以让64kbps的mp3达到128kbps的mp3的音质水平(注:在相同的编码条件下,数据速率的提升和音质的提升不是成正比的,至少人耳听觉上是这样的),这和官方声称的64kbps的mp3PRO可以媲美128kbps的mp3的宣传基本是吻合的。

7、WMA
WMA就是Windows Media Audio编码后的文件格式,由微软开发,WMA针对的不是单机市场,是网络!竞争对手就是网络媒体市场中着名的Real Networks。微软声称,在只有64kbps的码率情况下,WMA可以达到接近CD的音质。和以往的编码不同,WMA支持防复制功能,她支持通过Windows Media Rights Manager 加入保护,可以限制播放时间和播放次数甚至于播放的机器等等。WMA支持流技术,即一边读一边播放,因此WMA可以很轻松的实现在线广播,由于是微软的杰作,因此,微软在Windows中加入了对WMA的支持,WMA有着优秀的技术特征,在微软的大力推广下,这种格式被越来越多的人所接受。

8、RA
RA就是RealAudio格式,这是各位网虫接触得非常多的一种格式,大部分音乐网站的在线试听都是采用了RealAudio,这种格式完全针对的就是网络上的媒体市场,支持非常丰富的功能。最大的闪烁点就是这种格式可以根据听众的带宽来控制自己的码率,在保证流畅的前提下尽可能提高音质。RA可以支持多种音频编码,包括ATRAC3。和WMA一样,RA不但都支持边读边放,也同样支持使用特殊协议来隐匿文件的真实网络地址,从而实现只在线播放而不提供下载的欣赏方式。这对唱片公司和唱片销售公司很重要,在各方的大力推广下,RA和WMA是目前互联网上,用于在线试听最多的音频媒体格.

热点内容
阿里云esc服务器系统 发布:2025-01-18 09:49:16 浏览:789
你们家的无线网密码是多少 发布:2025-01-18 09:47:50 浏览:729
renderscriptandroid 发布:2025-01-18 09:32:18 浏览:992
安卓手机如何拍游戏素材 发布:2025-01-18 09:30:59 浏览:347
广州日立压缩机有限公司 发布:2025-01-18 09:15:08 浏览:623
服务器两条宽带如何叠加网速 发布:2025-01-18 08:52:17 浏览:730
oracle存储过程集合 发布:2025-01-18 08:42:39 浏览:884
洋葱数学缓存 发布:2025-01-18 08:38:36 浏览:918
电影的文件夹都是 发布:2025-01-18 08:21:49 浏览:835
post提交php 发布:2025-01-18 08:21:42 浏览:460