改进的文件压缩和加密的制作方法

文档序号:13081240阅读:144来源:国知局
改进的文件压缩和加密的制作方法与工艺
本申请涉及用于改进的文件压缩和加密的系统、方法、装置和计算机可读储存介质。
背景技术
:在数据和电信领域中,对于发送越来越大量数据的需求不断增加。随着通信信道增加其发送或发射数据的容量,用于对电影、音乐、游戏等进行流传输的需求稳步增长。即使近几年来的发展速度很快,并且通信信道的容量多次倍增,但是由于通信的数据量大,所以仍然存在瓶颈。在例如智能手机上观看电影时用户例如可能会体验到电影滞后。处理上述问题以增强不同网络节点之间的通信的一种方式是在发送数据之前对数据进行压缩。存在着不同的压缩数据的方法;然而,基本原理是对数据序列进行编码,即,使用较少比特的任何类型的信息然后是该数据的原始表示。这样的压缩可以是无损地进行,即在解压缩数据时不丢失任何信息。无损压缩通过识别和消除统计冗余来减少比特,以更简洁的方式呈现数据而不会丢失任何信息。无损压缩是可能的,因为大多数数据具有统计冗余。例如,在视频中,图像中可能存在在若干视频帧上没有改变颜色的区域(像素)。代替针对彼此相随的若干视频帧的“绿色像素,绿色像素,...”进行编码,可以将数据编码为“在接下来的43个视频帧中的绿色像素”,这是游程长度编码的示例,但是通过消除冗余,存在诸如lempel-ziv(lz)压缩方法之类的许多减少文件大小的方案。另一种方式是使用有损压缩,其通过识别“不必要的”信息并将其移除来减少比特。这种方案的出发点是信息的一些丢失是可接受的。从数据源中丢掉不必要的细节可以节省储存空间。通过对于人们如何感知所讨论的数据进行研究而了解有损数据压缩方案。例如,人眼对于微妙的亮度变化比对颜色变化更敏感。有损压缩的一个示例是众所周知的jepg图像压缩,其部分地通过舍去非必要的信息比特来工作。信息丢失与大小减少之间始终存在折衷。减少数据文件的大小的过程即使有一个正式的名称--源编码—但通常被称为数据压缩,源编码意味着在存储或发送数据之前在数据源处完成编码。压缩的益处在于它减少了用于存储、发射和处理数据的资源。然而,压缩数据必须被解压缩以进行使用,这在执行解压缩时需要一些附加的计算或其他成本。为了使数据压缩是值得的,应该有一个显著的压缩,使得值得额外的计算复杂度。已经进行了许多尝试来对数据进行压缩。随着公众需要越来越高质量的数据流传输到他们的设备,对于更有效的减少数据丢失的方式的需要也在不断增加。在你的智能手机上观看电影已经不再足够了;人们想看高清晰度、hd质量的电影。因此,存在对于一种用于通过压缩数据来增强不同网络节点之间的通信的更有效方法的需要。因此,因而需要一种用于针对压缩文件的改进的、可能的替代方式。技术实现要素:本申请的教导的目的是通过提供一种包括存储器和控制器的计算设备来克服上面列出的问题,其中所述控制器被配置为通过将所述文件的至少一部分变换为数字以及将所述数字变换为包括至少一个指数的指数向量来对所述文件进行压缩,其中每个指数对应于基向量中的基。在一个实施例中,所述控制器还被配置为:将所述基向量中的第一个基设置为当前基;找到针对所述当前基的指数;将所述指数包括在所述指数向量中;通过将数字减少提升到所述指数的幂的所述基来确定剩余数字;如果所述当前基不是所述基向量中的最后一个基,那么将所述当前基设置为所述基向量中的下一个基;将所述数字设置为所述剩余数字,并且所述控制器找到针对新的当前基的指数;并且否则如果所述当前基是所述基向量中的最后一个基,那么将常数设置为剩余数字,并且生成包括指数向量和常数的表示。本申请的教导的目的还在于通过提供一种用于通过如下方式对文件进行压缩的方法来克服在上面列出的问题:将所述文件的至少一部分变换为数字并将该数字变换为包括至少一个指数的指数向量,其中每个指数对应于基向量中的基,由此该文件由指数向量表示。本申请的教导的目的在于通过提供一种用于对由指数向量表示的文件进行解压缩的计算设备来克服在上面列出的问题,其中所述计算设备包括控制器,该控制器被配置为通过将基向量中的每个基提升到指数向量中的相应指数并将结果组合成数字来确定数字并将所述数字变换为文件。本申请的教导的目的还在于通过提供一种用于通过如下方式对由指数向量表示的文件进行解压缩的方法来克服在上面列出的问题:通过将基向量中的每个基提升到指数向量中的相应指数并将结果组合成数字来确定数字并将所述数字变换为文件。本申请的教导的目的还在于通过提供一种用指令编码的计算机可读储存介质来克服在上面列出的问题,该指令当在处理器上执行时执行根据上述的任何方法。本申请的教导的目的还在于通过提供一种包括存储器和控制器的计算设备来克服在上面列出的问题,其中所述控制器被配置为对文件进行加密;其中所述文件通过如下方式已被压缩:将所述文件的至少一部分变换为数字并将所述数字变换为包括至少一个指数的指数向量,其中每个指数对应于基向量中的基,由此所述文件由指数向量表示;其中所述控制器被配置为:对所述指数向量进行重新排序,从而对所述文件的表示进行加密。本申请的教导的目的还在于通过提供一种用于对文件进行加密的方法来克服在上面列出的问题,其中所述文件通过如下方式已被压缩:将所述文件的至少一部分变换为数字并将所述数字变换为包括至少一个指数的指数向量,其中每个指数对应于基向量中的基,由此所述文件由指数向量表示;其中所述控制器被配置为:对所述指数向量进行重新排序,从而对所述文件的表示进行加密。本申请的教导的目的还在于通过提供一种用指令编码的计算机可读储存介质来克服在上面列出的问题,所述指令当在处理器上执行时执行根据上述的方法。应该注意的是,与重复地试图找到合适的基而例如自上而下的搜索相比,通过试图按顺序找到针对每个基的最高(或接近)指数而从自下向上对指数进行搜索--优选地从最高基开始,实现了文件的更快的减少。此外,由于根据本发明的基的顺序是已知的,所以它也能够进行更好的加密,因为不需要向基提供指数,这与指数/基对的数量从开始是未知的系统不同。所公开的实施例的其他特征和优点将从以下详细公开内容、从所附的从属权利要求以及附图中变得显而易见。通常,权利要求书中使用的所有术语均应根据
技术领域
中的其普通含义来进行解释,除非本文另有明确定义。所有对“一/一个/该[元素、设备、组件、装置、步骤...等]”的引用被公开地解释为指代元素、设备、组件、装置、步骤等的至少一个实例,除非另有明确说明。除非明确说明,否则不必以所公开的确切顺序执行本文所公开的任何方法的步骤。附图说明将参照附图更详细地描述本发明,其中:图1是根据本文教导的终端的示意视图;图2是根据本文教导的终端的组件的示意视图;图3示出了根据本申请的教导的一个实施例的计算机可读介质的示意视图;图4示出了根据本文教导的实施例的压缩/解压缩系统400的概述;图5a示出了根据本文教导的实施例的指数向量的表示500的示意视图;图5b示出了根据本文教导的实施例的对应的基向量;图6示出了根据本文教导的实施例的用于基于基向量而将数字减少到指数向量的一般方法的流程图;图7示出了根据本文教导的实施例的数字的表示,其中标记了最高有效位置;图8示出了根据本文教导的实施例的如何通过找到最高有效位置来确定最高指数的一般方法的流程图;图9示出了根据本文教导的实施例的用于对文件进行加密和解密的方法的流程图;图10示出了根据本文教导的实施例的用于对文件进行加密和解密的方法的流程图;图11示出了根据本文教导的实施例的文件的重复压缩的示意视图;和图12示出了根据本文教导的实施例的用于对文件进行加密和解密的方法的流程图。具体实施方式现在将在下文中参考附图更全面地描述所公开的实施例,在附图中示出了本发明的某些实施例。然而,本发明可以以许多不同的形式来体现,并且不应被解释为局限于本文所阐述的实施例;而是通过示例的方式提供这些实施例,使得本公开将是彻底和完整的,并且将向本领域技术人员充分地传达本发明的范围。相似的数字遍及全文指代相似的元件。图1示出了根据本文实施例的计算设备100。在一个实施例中,计算设备100被配置用于无线或有线的网络通信。在一个实施例中,计算设备100被配置用于无线和有线的网络通信。这样的计算设备100的示例举几个例子来说是:个人计算机、台式或膝上型计算机、互联网平板电脑、移动电话、智能电话、个人数字助理、服务器、电子钥匙、机器对机器设备(m2m)和工作站。计算设备100在下文中将被例示和描述为个人计算机100。个人计算机或终端100包括显示器110和壳体120。壳体包括控制器或cpu(未示出)以及诸如储存单元和内部存储器之类的一个或多个计算机可读储存介质(未示出)。储存单元的示例是磁盘驱动或硬盘驱动。终端100还包括至少一个数据端口。数据端口可以是有线和/或无线的。数据端口的示例是usb(通用串行总线)端口、以太网端口或wifi(根据ieee标准802.11)端口。数据端口被配置为使得终端100能够与其他终端或服务器连接。终端100还包括诸如键盘130的至少一个输入单元。输入单元的其它示例举几个例子来说是计算机鼠标、触摸垫、触摸屏或操纵杆。图2示出了计算设备的一般结构的示意视图。计算设备可以是如图1中的计算设备或服务器。在一个实施例中,计算设备是将在下面更详细地讨论的计算设备。在下面的描述中,计算设备将被公开为根据图1的终端。终端100包括控制器210,其负责终端100的总体操作,并且优选地由任何商业上可用的cpu(“中央处理单元”)、dsp(“数字信号处理器”)或任何其他电子可编程逻辑设备来实现。控制器210可以使用能够实现硬件功能性的指令--例如通过在通用或专用处理器中使用可执行计算机程序指令--来实现,其中所述可执行计算机程序指令可以存储在计算机可读储存介质(盘、存储器等)240上以由这样的处理器执行。计算设备100包括用于在上面存储计算机文件的存储器240。计算机文件在本领域中是公知的,并且在本文中将简称为文件。控制器210被配置为从存储器240读取指令并执行这些指令以控制终端100的操作。存储器240可以使用用于计算机可读存储器的任何公知技术来实现,诸如rom、ram、sram、dram、cmos、flash、ddr、eeprom存储器、闪存、硬盘驱动器、光学储存器或其任何组合。存储器240由控制器210用于各种目的,其中一个目的是用于存储用于终端100中的各种软件模块的应用数据和程序指令250。软件模块包括实时操作系统、用于人机接口220的驱动器、应用处理机以及各种应用250。应用250可以包括诸如电子邮件的消息收发应用、浏览应用、银行应用以及各种其他应用250。终端100还可以包括在图1的终端100中的用户接口220,其包括显示器110、小键盘130。显示器110可以是触摸显示器,可以在其上显示和操作虚拟键(未示出)。如果在本文中没有明确说明,则这样的虚拟键可以替代任何或所有的物理键130并且没有任何区别。用户接口(ui)220还包括一个或多个硬件控制器,其连同ui驱动器一起与显示器110、小键盘130以及诸如声音系统、led指示器等的各种其它i/o设备协作。众所周知,用户可以通过如此形成的人机接口来操作终端100。终端100还可以包括通信接口230,其适于允许终端与其他设备通信。通信接口可以是适于通过使用不同的射频技术进行通信的射频接口。这些技术的示例举几个例子来说是wifi、bluetooth®、w-cdma、gsm、utran、lte和nmt。通信还可以或者可替代地是有线接口230,其适于允许终端通过使用不同的网络技术来与其他设备通信。这些技术的示例举几个例子来说是usb、以太网和局域网、tcp/ip(传输控制协议/互联网协议)。计算设备100因此被配置为通过通信接口230接收和/或传送文件。图3示出了如上所述的计算机可读介质的示意视图。计算机可读介质30在本实施例中是数据盘30。在一个实施例中,数据盘30是磁数据储存盘。数据盘30被配置为携带指令31,当将指令31加载到诸如处理器的控制器中时,其执行根据上述公开的实施例的方法或过程。数据盘30被布置成连接到读取设备32或在读取设备32内并且由读取设备32读取,以用于将指令加载到控制器中。与一个(或若干)数据盘30组合的读取设备32的一个这样的示例是硬盘驱动。应当注意,计算机可读介质也可以是诸如光盘、数字视频盘、闪存或其他通常使用的存储器技术的其它介质。在这样的实施例中,数据盘30是一种类型的有形计算机可读介质30。通过将指令31包括在计算机可读信号33中,还可以将指令31下载到诸如计算机或能够读取计算机可读介质上的计算机编码数据的其它设备之类的计算机数据读取设备34,其中计算机可读信号33经由无线(或有线)接口(例如通过互联网)传送到计算机数据读取设备34,以用于将指令31加载到控制器中。在这样的实施例中,计算机可读信号33是一种类型的非有形计算机可读介质30。可以将指令存储在计算机34的存储器(图3中未明确示出,但在图2中被标记为240)中。对计算机程序、指令、代码等的引用应当被理解为包含用于可编程处理器的软件或固件,诸如例如硬件设备的可编程内容--无论是用于处理器的指令还是用于固定功能设备、门阵列或可编程逻辑器件等的配置设置。图4示出了根据本文教导的实施例的压缩/解压缩系统400的概述,包括或者要在至少一个计算设备100内执行。计算设备100的控制器210被配置为接收文件410。文件410可以通过通信接口230或从存储器240接收。计算设备100的控制器210被配置为处理文件410以便对其进行压缩以用于压缩文件410的改进储存或传输。这由于它节省了储存空间和/或带宽而具有技术优点。在一个实施例中,控制器被配置为采用用于将文件410分割或划分成415更小部分并且各个地压缩每个部分的装置。在下文中,在处理一个部分或完整文件之间将没有区别。在各个地压缩文件的各部分的实施例中,对应的控制器将被配置为各个地处理各部分,并且级联或以其他方式组合由压缩部分的解压缩产生的文件部分。分割成较小部分的一个益处是针对每个部分的计算速度更快。仅使用基{2,3,5,7},150字节的文件部分的示例已经导致针对每个部分的4.7%的压缩比,导致4.7%的总体压缩。控制器210被配置为通过采用用于将文件410变换为数字x的装置420来压缩文件410(或其部分)。在一个实施例中,控制器被配置为将文件410变换为十进制数,即具有基410的数字。在一个实施例中,控制器被配置为将文件410变换成十六进制数,即具有基16的数字。在一个实施例中,控制器被配置为将文件410变换成二进制数,即具有基2的数字。在这样的实施例中,实际转换可以通过简单地将文件变换成在上面更适合于执行数学运算的格式来表示。在一个这样的实施例中,转换成的格式是字符串向量。控制器210然后采用用于将数字x变换为指数向量exp的装置430。控制器210被配置为通过确定针对基向量base的指数来将数字x变换成指数向量exp,其中数字x可以由基向量base的每个元素来表示,所述每个元素被提升为指数向量exp的相应元素的幂。通过仔细地选择基,数字x继而可以以比如果该数字以其天然形式表示的形式更短的形式来表达。一个普通的示例来说明,对应于十进制数256(25610)的文件[1000000]可以通过针对对应基16的指数2表示。需要发射或存储的全部内容因此是[10]=210(十进制2)并且已经实现25%的压缩比。然后,控制器210可以存储或发射指数向量,以用于由相同或另一计算设备稍后检索。在下文中,将通过向存储器240的传输来表示存储,并且存储在存储器240中和通过通信接口230进行传输之间没有区别。相同或另一计算设备的控制器210被配置为从存储器240或通过通信接口230接收指数向量exp,并且通过采用用于将指数向量exp变换成数字的装置440来将指数向量exp变换成数字。然后,控制器210采用用于将数字xr变换成文件的装置450,从而对文件410进行解压缩。在文件410的部分已被压缩的实施例中,控制器被配置为对部分进行解压缩,然后将所得到的文件部分级联或以其他方式组合成完整文件。特别是如果与各部分相对应的指数向量exp被无序地接收,则控制器210被配置为确定顺序并以正确的顺序组合各部分。该顺序可以由序列或排序数字来指示,其是针对表示该部分的数字的指数向量exp的一部分。控制器210被配置为从存储器(或通过通信接口)检索基向量base,并且如果对文件进行压缩的控制器和对文件进行解压缩的控制器(其可以是相同的控制器)二者可以访问相同的基向量base,可以通过简单地将基向量base的元素提升为指数向量exp的元素的幂并组合部分结果来容易地重构该数字。图5a示出了指数向量exp的表示500的示意视图。指数向量exp的每个元素由表示500的(比特)字段表示。在图5a的示例中,指数向量exp包括排序数字n、缩放数字n、指数a、b、c等以及常数k。应当注意,排序数字n、缩放数字n和/或常数k是可选的。指数向量exp的基本元素是基指数a、b、c等。在一个实施例中,指数向量exp也可以包括针对一个或若干基的多个指数。例如,对于包括基{a,b,c}的基向量base,指数向量exp可以是{n,n,a1,a2,b,c1,c2,k}。在一个实施例中,指数向量exp也可以包括用于基向量中的每个基的常数ci。这些常数ci是缩放常数。图5b示出了对应的基向量base。在图5b的示例中,基向量包括基a、b、c等。可以通过经过加法、乘法或其组合将提升到指数向量exp中的指数的基向量base中的基进行组合,来重建文件数字。用于重建数字的一个一般公式是:x=n*(aabbcc)+k,其中表示诸如乘法或加法的组合操作。如上面已经提及的,每个基可以具有多于一个的对应指数。在这种情况下,针对数字x的更一般公式为:x=n*(∑aai∑bbi∑cci)+k,其中ai是针对基a的(一个或多个)指数,bi是针对基b的(一个或多个)指数,ci是针对基的(一个或多个)指数。可替代地,基向量base可以包括重复基,从而可以应用第一个公式。对于以下呈现的公式也同样适用。为了减少所需的计算次数、减少指数大小并且为了提高压缩的分辨率,可以使用缩放因子。对于每个基指数对也被缩放的实施例,广义公式变为:x=n*(∑ciaai∑cibbi∑cicci)+k,其中ci是缩放因子。可替代地,对针对每个基的和进行缩放(其对应于针对相同基的所有缩放因子相同,ci=cj),并且广义公式变为x=n*(ca∑aaicb∑bbicc∑cci)+k,其中ca是针对基a的缩放因子。对于缩放组合,公式变为:x=n*(ca∑ciaaicb∑cibbicc∑cicci)+k还应该注意的是,公式可以具有递归元素或重复元素。我们选择下面的表示法(notation)来说明这一点。x=nt*∑nj*(ca∑ciaaicb∑cibbicc∑cicci)+kj)+kt其中nj和kj是针对每个重复的乘数和常数,nt和kt是针对总公式的乘数和常数。如上面已经指出的,所有缩放因子、乘数和/或常数以及基不需要明确地是公式的一部分。常数k可以用来指示数字是奇数,并且从而将处理减少为仅减少偶数数字,然后这将携带一比特来指示在被减少之前实际上是奇数还是偶数(奇数数字继而在减少之前将减-1,并在重构时加+1。常数k因此可以有多于一个部分,即用于指示奇数/偶数的一个部分、以及用于指示可能余数的部分。此外,还可以有针对公式的每次重复的一个(一组)常数,如上面的表示法所指示的那样。组合操作也可以用来指示分段或部分计算,诸如通常用括号指示的。当然,这也可以由出现多次的一些基来表示。例如(从这个示例中可以删掉常数、缩放因子和乘数,但应该注意的是,它们也可以如由上面的表示法所指示的那样被包含):也可以将aa(bb+cc)表达为aa*bb+aa*cc如果在若干步骤中重复此,那么表示法可以为∑ajaj(bjbj+cjcj)=a1a1(b1b1+c1c1)+a2a2(b2b2+c2c2)…也可以将其表达为∑ajaj*bjbj+ajaj*cjcj=a1a1b1b1+a1a1c1c1+a2a2b2b2+a2a2c2c2…应当注意,即使上述公式仅具有三个基,但是任意数量的基是可能的。基的数量可以保持为低,例如低于10或低于5,以实现较高的压缩比,因为低数量的基导致较短的指数向量。为了避免负常数,可以忽略指数为0的基,因此当基相加在一起时,即当=+时,它们不会对总和做贡献。可替代地,可以将指数存储为比所确定的大一,并且然后将基提升到指数-1的幂。被选择用于基向量的基取决于设计问题,并且可以取决于要被压缩的文件的大小、压缩比和压缩速度来选择。例如,大的基给出较短的指数向量和更快的压缩,但分辨率不是那么良好,其需要大常数和可能的排序数字。大基数也导致较短的指数。较低的基提供较高的分辨率,但可能是较慢的压缩。在一个实施例中,基被间隔开以提供分辨率和更快的压缩,因为大的基更快地减少数字x。基可能呈指数增长a=10(=101),b=100(=102),c=1000(=103)a=10,b=100(=a2),c=10000(=b2)或者呈线性地增长a=10,b=20,c=30a=2,b=3,c=5如果基是素数,则它们避免了除法循环发生。这种基向量的示例是:{2,3,5,7}(线性)和{2,31,127,1027}(指数)。如果其中一个基等于针对数字格式的基(例如,基为针对二进制数的2,针对十进制数的10等等),并且该基通过乘法进行组合,则通过简单地计算表示中的尾随0的数量很容易找到指数,也许不是最高的但是至少部分地),从而避免除法运算。在一个实施例中,针对每个基(或至少一个基)的指数可以伴随针对该基的缩放常数。这实现了数字x的更快压缩/减少,特别是对于大的数字x(或由于正在减少数字x而引起的数字x大的剩余)。例如,如果要使用基a=10、b=100来减少数字220,则可以使用表示法x=caaa+cbbb以及exp={ca;a;cb;b}来将该数字表达为2;1;2;1或二进制10;1;10;1或101101,其比11011100更短。如果不使用缩放因子,即,使用表示法x=aa+bb+k和exp={a;b;k}来表达相同的数字,则数字220将被表达为{1;1;11011110}。可替代地,可以使用一般缩放,即表示法x=n(aa+bb)+k和exp={n;a;b;k},这将导致{10;1;1}。可以看出,使用缩放因子可以极大地减少指数向量的大小,或者至少指数向量的元素。使用缩放因子的益处来自于仅使用指数可导致指数增加可导致太大的变化的事实,而简单的缩放可以快速减少数字,并且随着缩放因子总是比基更小(或者不需要它们),所以它们不需要太多的空间并因此对指数向量的大小不会增加太多。当数字或针对数字的剩余远远大于最高或下一个基时,对于相同的基使用多个指数变得有益。然后在针对给定基的数字内拟合多于一个基指数对是可能的。图6示出了用于基于基向量base={a,b,...,d}将数字减少为指数向量exp={ca,a,cb,b,...,cd,d}的一般方法的流程图。数字可以是已变换的文件(或部分文件)的结果。应该注意,缩放因子是可选的、各个地或整体的。还要注意,针对至少一个基使用多个指数(和缩放因子)也是可能的,并且将作为替代方案而被公开,尽管未表达在图6的示例中所使用的表示法中。该方法从接收610数字x开始。接下来,找到620针对基的指数。在一个示例中,找到(下一个)最高指数。在一个示例中,找到针对(下一个)最大基的指数。在一个示例中,找到针对最大基的最高指数。在图6的示例表示法中,找到针对基d的最高d。可以通过重复地将数字x除以基d来找到指数d。可替代地,可以通过表查找来找到指数d。可替代地,可以通过找到针对数字x的最高有效位置(msp)来找到指数d。下面将参考图7和图8详细地解释该替代方案。当已经找到最高指数d时,可以通过将数字x除以提升到d幂的最高基d并截断结果来确定630缩放因子(如果使用的话)。在使用的表示法中cd=trunc(x/dd)。此后,通过从数字中减去乘以缩放因子的提升到指数幂的基来找到640剩余数字xres,即xres=x-cddd。或者以数据逻辑表示法xres=modula(x/dd)。在要通过乘法对基进行组合的实施例中,通过除法确定剩余数字。在这两种情况下,通过将该数字减少提升到指数幂的基来确定剩余数字。可选地,如果要针对当前正在处理的基找到多于一个指数,则使用剩余数字xres作为数字x,即645设置x=xres,该方法返回以找到针对基的最高指数。此后,确定650在基向量base中是否存在更多的基以找到针对其的指数。如果是这样,那么继续利用下一个较低的基来减少剩余数字,即660设置x=xres并且base=basek-1,其中k是当前基的索引,假设基向量按升序进行排序。这提供了在指数向量exp中的(其他)指数c、b、a...。如果没有更多的基,则剩余数字是余下的或常数k670,即,设置k=xres,并且完成680指数向量exp,并且可以将指数向量exp进行存储或发射以供稍后检索以被解压缩回到数字x。为了将指数向量解压缩690成数字x,在用于压缩的公式中简单地插入指数向量exp。该公式可以是在上面给出的任意的各种公式。如上面所公开的,可以通过找到针对数字x的最高有效位置来找到针对基的最高指数。图7示出了数字x的表示,其中标记了最高有效位置msp。对于二进制数字x,最高有效位置是最高有效1比特。在图7的示例中,以8比特示出数字x=109,其中msp是位置2。在图7的示例中,针对最高有效位置的编号从最低位置到最高位置,但应该注意的是,编号本身可能是不重要的。在一个实施例中,它仅被用于表查找。然而,在一个实施例中,通过基于msp对它进行计算来将它用于确定指数。图8示出了用于如何通过找到最高有效位置来确定最高指数的一般方法的流程图。为了找到msp,计算设备的控制器可以简单地搜索810数字x的表示以找到第一个非零元素。由于数字x不是任何数字,而是代表文件(的部分),所以它将全部为零或从许多零开始的可能性是非常不可能的,并且因此,搜索msp将相当非常快,只需要一些比较。此后,找到820最高指数。可以通过表查找找到指数。针对二进制数字x(=109)和基(=7),下面对于图7的示例示出了这样一个表的示例。mspexp7262514131201000可替代地,可以通过基于基向量base的当前基、针对数字x的数字基(二进制,十进制,十六进制,...)和msp来计算最高指数从而找到最高指数。对于基b、指数e和数字基d,最高指数可以确定为e=trunc()。可替代地,因为用于减少的基(即,基向量base的(一个或多个)元素)是已知的并且针对数字表示的基也是已知的,可以以更快的方式确定指数e或至少接近指数e的指数,由此可以预先确定基b的数字基d根。然后可以将指数e确定为e=trunc(msp)或者可替代地msp*trunc(),其中为了更快的计算,可以预先确定trunc(或。如果发现830指数为0,则选择下一个较低的基,并且通过如上的表查找或计算,基于较低的基来确定指数。对于大数字,即大文件,可以通过排除指数为零的所有元素来因此相应地缩小指数msp表。针对图7的示例表然后变成了mspexp7262514131可替代地,表可以包括指数,而且也可以包括对应的基。在这种情况下,关于指数是否为零的确定导致常数k是与没有更多较低的基时的情况相同的情况的数字。在图7和图8的示例中,已经假定针对每个基确定仅仅一个指数,但是对于针对一个或多个基的多个指数,可以使用相同的方法。概括而言,使用多个指数可以被认为具有带有重复基的基向量。这对于参考图6并且在上面给出的公开内容而言也同样适用。对于图8,确定830指数是否为零,因此接着确定835是否有更多的基。如果有更多的基,那么方法继续下一个基。如果没有更多的基,则将常数k设置为等于850数字x,并且指数序列完成。如果确定指数不为0,则已经找到指数,并且在找到620指数后该方法如图6中继续进行。如果基可以与数字基均匀划分,则可以通过一系列移位来计算提升到指数幂(dd)的基,并且不需要耗时的乘法动作。因此,在上文中已经公开了可以如何通过将文件变换为数字(或部分数字的系列,其每一个对应于文件部分),并使用公式和基的向量base将数字减少到指数向量exp来对文件进行压缩。然后可以单独地由指数向量来表示该文件用于存储或传输。为了改变对文件进行解压缩,所需要的全部内容是关于基向量中的基的知识以及关于任何缩放因子以及如何应用它们的知识。应该显而易见的是,由于在不知晓基、指数的顺序、是否应该应用缩放因子等的情况下对文件进行解压缩是不可能的,所以使用本文的方法还对文件进行加密是可能的。众所周知,开放式加密方案受到业界的青睐,其中用于加密的公式被公开披露。这对于本文给出的压缩方案也将是有益的,因为它将导致更广泛扩散的使用。然而,通过与另一方就发射指数向量的元素的顺序简单地秘密达成一致,可以对文件进行加密以及压缩。特别是对于大文件——其中将把文件分割成较小的部分,几乎不可能破译指数的重新排序组合是否导致了正确的解压缩,因为结果只给出整个文件的一部分,从而使其难以检查解压缩的正确性。分割成较小部分的一个益处是针对每个部分的计算更快。仅使用基向量{n,2,3,5,7,k},150字节的文件部分的示例已经导致针对每个部分的4.7%的压缩比,导致4.7%的总体压缩。图9示出了根据本文教导的用于对文件进行加密和解密的方法的流程图。如在上面中,对文件进行压缩910,导致指数向量exp。对指数向量exp进行重新排序920,从而有效地加密压缩,并且然后进行存储或发射930。可替代地,如针对920的虚线框所指示的那样,不对指数向量进行重新排序。在这样的实施例中,基及其顺序被保持秘密。在对文件进行解压缩950之前,可以再次对指数向量exp进行排序940,以拟合要被使用的公式--对指数向量exp实际地重新排序或者通过应用对应的公式。应当注意,即使已经给出本文的公开内容为对指数向量进行重新排序,但是也可以将相同的教导应用于对基向量base进行重新排序,即,使用通过压缩器或解压缩器的不同公式,其实际上对应于指数向量的重新排序。应当注意,无论指数和/或基向量是否关于顺序而被保持秘密和/或被维持,加密都发生,因为压缩本身也用于加密对应的文件。在一个实施例中,特别是其中文件已被分割成若干部分的一个实施例中,也可以发射或存储基向量base。然后,通过假设指数向量exp和基向量base的格式,可以使用一般公式来对文件进行解压缩,使得指数可以与相应的基配对。这种一般格式的一个示例是:指数向量exp的每个元素以相同的顺序对应于基向量base的基。另一个示例是:指数向量exp中的每个元素对构成以相同的顺序对应于基向量base中的基的指数和缩放因子。在这样的实施例中,可以对基向量以及指数向量进行重新排序以提供甚至更多可能的加密。此外,指数向量(以及可能的基向量)可以针对每个文件部分被不同地重新排序。重新排序可以基于公式或根据表格。对于1mb的示例文件,150字节的文件部分(对应于400位十进制数)和具有四个基的基向量并使用缩放因子,我们有针对每个文件部分的4!*8!=967680种可能性,导致967680*6991[=1mb/150字节]=6,765,050,880种可能性。结合以混乱的顺序发射文件部分,可能性的数量变得甚至更大。为了对文件进行解密,可以将指数向量重新排序回到其原始排序,或者解密可以基于重新排序的基向量。可替代地或附加地,顺序和/或基被保持秘密。在将基向量base作为压缩文件的一部分进行存储或发射的实施例中,可以基于msp来动态选择基。例如,如果存在许多前导零(低msp),则选择较小的基,而如果msp为高,则选择较高的基。这导致稍微较低、但更快的压缩并且具有适配的分辨率。由于本文的教导导致要被发射的指数向量exp(可能包括标量和/或常数),所以发明人已经意识到,由文件表示的指数向量本身也可以被(进一步)压缩或加密。因此,在一个实施例中,方法和并入该方法的设备被配置为继续压缩(和/或加密)指数向量exp(可能包括标量和/或常数)直到实现期望的压缩比。图10示出了针对可能由计算设备执行的这种方法的流程图。文件被接收并被变换为数字x(可能是在上面讨论的部分),并且将数字x压缩为指数向量e(可能包括标量和/或常数)。指数向量e由与原始文件(或其部分)进行比较的文件(结构)来表示。如果压缩比(被定义为指数向量的大小除以文件(部分)的大小)1030不低于阈值水平,例如5%、10%、15%、20%或在0到25%的范围内时,将指数向量e变换成数字x',其被压缩,导致新的指数向量e。确定1020新的指数向量e'与原始文件(部分)相比较的压缩比,并且如果其超过阈值1030,则重复该过程直到实现期望的压缩比。这允许在部分尺寸和计算复杂度与要被确定的计算速度之间进行折衷。例如,用于找到指数向量的计算复杂度对于较大的文件部分而言增加,而针对较小部分的压缩比高于针对较大部分的压缩比。通过连续压缩可以实现部分尺寸和计算速度之间的折衷。这是基于:计算复杂度随着部分大小而非线性地增加,而重复压缩则是线性的复杂度。图11示出了如何重复地压缩文件(部分)x的大小的示意视图。每个压缩本身导致67%的压缩比,由此得到的指数向量分别被压缩到67%、44%、30%和20%。为了对文件进行解压缩,在每个压缩之前添加1015解压缩比特。解压缩比特指示是否要执行进一步的解压缩(1指示进一步解压缩,0指示解压缩完成)。当文件要被解压缩时,接收1210指数向量(可能包括标量和/或常数)并对其进行解压缩1220。检查1230解压缩比特,并且如果它指示进一步解压缩(比特=1),则重复解压缩。当解压缩比特指示没有进一步解压缩(比特=0)时,解压缩完成。以上已经参照一些实施例主要地描述了本发明。然而,如本领域技术人员容易理解的那样,在所附专利权利要求所限定的本发明的范围内,上面公开的实施例之外的其他实施例同样是可能的。权利要求书(按照条约第19条的修改)1.一种包括存储器(240)和控制器(210)的计算设备(100),其中所述控制器(210)被配置为通过以下方式对文件(410)进行压缩:将所述文件(410)的至少一部分变换为数字(x)和将所述数字(x)变换为包括至少一个指数的指数向量(exp),其中每个指数对应于基向量(base)中的基,由此所述文件(410)由所述指数向量(exp)表示,其中,所述控制器被配置为:将所述基向量中的第一个基设置为当前基;找到针对所述当前基的指数;将所述指数包括在所述指数向量(exp)中;通过将所述数字(x)减少提升到所述指数的幂的所述基来确定剩余数字(xres);如果所述当前基不是所述基向量(base)中的最后一个基,那么将所述当前基设置为所述基向量(base)中的下一个基;将所述数字(x)设置为所述剩余数字(xres),并且所述控制器(210)找到针对新的当前基的指数;并且否则如果所述当前基是所述基向量(base)中的最后一个基,那么将常数(k)设置为剩余数字(xres),并且生成包括所述指数向量(exp)和所述常数的表示,从而将所述文件(410)的所述至少一部分变换为所述数字(x)。2.根据权利要求1所述的计算设备(100),其中,所述指数是最高指数。3.根据任一前述权利要求所述的计算设备(100),其中,所述控制器(210)还被配置为通过表查找来找到所述指数。4.根据任一前述权利要求所述的计算设备(100),其中,所述控制器(210)还被配置为通过可能的重复除法找到所述指数。5.根据任一前述权利要求所述的计算设备(100),其中,所述控制器(210)还被配置为基于最高有效位置(msp)找到所述指数,其中所述最高有效位置(msp)是在所述数字(x)的表示中不为零的第一个元素的位置。6.根据权利要求5所述的计算设备(100),其中,所述控制器(210)还被配置为通过表查找基于所述最高有效位置(msp)找到所述指数。7.根据权利要求5所述的计算设备(100),其中,所述控制器(210)还被配置为:通过计算提升到所述最高有效位置(msp)的幂的针对所述表示的所述基的当前基根,基于所述最高有效位置(msp)来找到所述指数。8.根据权利要求5所述的计算设备(100),其中,所述控制器(210)还被配置为:通过计算针对所述当前基的表示根的基并将这与所述最高有效位置(msp)相乘,基于所述最高有效位置(msp)来找到所述指数。9.根据任一前述权利要求所述的计算设备(100),其中,所述控制器(210)还被配置为通过将所述数字(x)除以提升到所述指数的幂的所述当前基来确定针对所述当前基的缩放因子,并且此后通过将所述数字(x)减少乘以缩放因子的提升到所述指数的幂的所述基来确定剩余数字(xres)。10.根据任一前述权利要求所述的计算设备(100),其中,所述控制器(210)还被配置为通过从所述数字(x)减去提升到所述指数的幂的基来减少所述数字(x)。11.根据任一前述权利要求所述的计算设备(100),其中,所述指数向量(exp)中的至少两个指数对应于所述基向量(base)中的相同基。12.根据任一前述权利要求所述的计算设备(100),其中所述基向量(base)包括重复基。13.根据任一前述权利要求所述的计算设备,其中,所述控制器(210)还被配置为通过对所述指数向量(exp)进行重新排序来加密所述文件(410)。14.根据任一前述权利要求所述的计算设备,其中,所述控制器(210)还被配置为通过将所述文件表示解释为数字(x)来将所述文件(410)变换为所述数字(x)。15.一种用于通过如下方式对文件(410)进行压缩的方法将所述文件(410)的至少一部分转换为数字(x)和将所述数字(x)变换为包括至少一个指数的指数向量(exp),其中每个指数对应于基向量(base)中的基,由此所述文件(410)由所述指数向量(exp)表示,其中所述方法包括:将所述基向量中的第一个基设置为当前基;找到针对所述当前基的指数;将所述指数包括在所述指数向量(exp)中;通过将所述数字(x)减少提升到所述指数的幂的所述基来确定剩余数字(xres);如果所述当前基不是所述基向量(base)中的最后一个基,那么将所述当前基设置为所述基向量(base)中的下一个基;将所述数字(x)设置为所述剩余数字(xres),并且所述控制器(210)找到针对新的当前基的指数;并且否则如果所述当前基是所述基向量(base)中的最后一个基,那么将常数(k)设置为剩余数字(xres),并且生成包括所述指数向量(exp)和所述常数的表示,从而将所述文件(410)的所述至少一部分转换为所述数字(x)。16.一种用于对已经根据权利要求1-15中的任一个进行压缩的文件(410)进行解压缩的计算设备(100),所述文件(410)由指数向量(exp)表示,其中所述计算设备包括控制器,所述控制器被配置为通过将基向量(base)中的每个基提升到指数向量(exp)中的相应指数并将结果组合成数字(x)来确定数字(x)并将所述数字(x)变换为文件(410)。17.一种用于通过如下方式对已经根据权利要求1-15中的任一个进行压缩的文件(410)进行解压缩的方法,所述文件(410)由指数向量(exp)表示,通过将基向量(base)中的每个基提升到指数向量(exp)中的相应指数并将结果组合成数字(x)来确定数字(x)并将所述数字(x)变换为文件(410)。18.一种用指令(31)编码的计算机可读存储介质(30),所述指令当在处理器上执行时执行根据权利要求15或17的方法。19.一种包括存储器(240)和控制器(210)的计算设备(100),其中所述控制器(210)被配置用于对文件(410)进行加密;其中所述文件已通过如下方式被压缩将所述文件(410)的至少一部分变换为数字(x)和将所述数字(x)变换为包括至少一个指数的指数向量(exp),其中每个指数对应于基向量(base)中的基,由此所述文件(410)由所述指数向量(exp)表示,其中,所述控制器被配置为:将所述基向量中的第一个基设置为当前基;找到针对所述当前基的指数;将所述指数包括在所述指数向量(exp)中;通过将所述数字(x)减少提升到所述指数的幂的所述基来确定剩余数字(xres);如果所述当前基不是所述基向量(base)中的最后一个基,那么将所述当前基设置为所述基向量(base)中的下一个基;将所述数字(x)设置为所述剩余数字(xres),并且所述控制器(210)找到针对新的当前基的指数;并且否则如果所述当前基是所述基向量(base)中的最后一个基,那么将常数(k)设置为剩余数字(xres),并且生成包括所述指数向量(exp)和所述常数的表示,从而将所述文件(410)的所述至少一部分变换为所述数字(x),其中所述控制器(210)还被配置为:对所述指数向量(exp)进行重新排序,从而对所述文件(410)的表示进行加密。20.根据权利要求19所述的计算设备(100),其中,所述控制器还被配置为对所述基向量(base)进行重新排序。21.一种用于对文件(410)进行加密的方法;其中所述文件已通过如下方式被压缩将所述文件(410)的至少一部分变换为数字(x)和将所述数字(x)变换为包括至少一个指数的指数向量(exp),其中每个指数对应于基向量(base)中的基,由此所述文件(410)由所述指数向量(exp)表示;其中,所述控制器被配置为:将所述基向量中的第一个基设置为当前基;找到针对所述当前基的指数;将所述指数包括在所述指数向量(exp)中;通过将所述数字(x)减少提升到所述指数的幂的所述基来确定剩余数字(xres);如果所述当前基不是所述基向量(base)中的最后一个基,那么将所述当前基设置为所述基向量(base)中的下一个基;将所述数字(x)设置为所述剩余数字(xres),并且所述控制器(210)找到针对新的当前基的指数;并且否则如果所述当前基是所述基向量(base)中的最后一个基,那么将常数(k)设置为剩余数字(xres),并且生成包括所述指数向量(exp)和所述常数的表示,从而将所述文件(410)的所述至少一部分变换为所述数字(x),以及对所述指数向量(exp)进行重新排序,从而对所述文件(410)的表示进行加密。22.一种用指令(31)编码的计算机可读储存介质(30),所述指令当在处理器上执行时执行根据权利要求21的方法。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1