一种数字数据变换方法

文档序号:6573113阅读:503来源:国知局

专利名称::一种数字数据变换方法
技术领域
:本发明涉及信息处理
技术领域
,特别涉及数字加密、数字签字、数据压缩等信息处理
技术领域
。随着Internet国际互联网及其商业应用的迅猛发展,E-mail(电子邮件)的安全保密问题越来越突出。1991年出现了主要用于E-mail加密的密码系统PGP(PrettyGoodPrivacy),以及于1993年发布最后文本的Internet标准建议草案PEM(PrivacyEnhancedMail)。如今,PGP密码系统大约被全世界三亿Internet个人用户中的半数用于E-mail加密;而PEM正在被越来越多的Internet企业用户采用,成为电子商务安全的一个基础。PGP和PEM都能为用户提供消息的保密和认证功能,以及与E-mail的兼容性;PGP还为用户提供消息的压缩功能。所谓与E-mail兼容,就是把准备用E-mail传送的任意8-比特数据字节(Byte)串或任意比特流数据,变换为有限制的ASCII(AmericanStandardCodeforInformationInterchange)字符的串。对后者的主要限制有(1)字符可打印;(2)字符集中不包含控制字符。这样的ASCII字符共有95个,其对应的10进制编码是从32到126的全部整数。由这样的ASCII字符书写的邮件符合Internet标准SMTP(SimpleMailTransferProtocol),能在几乎所有的E-mail系统中传递。目前,PGP或PEM提供与E-mail的兼容性,都是通过称为“基数-64变换”的编码映射Base64(也记作Radix-64)来实现的。“基数-64变换”将输入消息M切分为6比特长的分组作为自变量实施映射,该映射记为Base64[]X→Y其中,自变量或原像集X包括全部64个6比特符号(用整数记为0,1,...,63)和表示“无数据”的Φ;像集Y包括26个英文字符的大写和小写、0至9的阿拉伯数字、“+”、“/”,和填充符“=”。常用软件中采用的映射规则为Base64=“A”,...,Base64[25]=“Z”,Base64[26]=“a”,...,Base64[51]=“z”,Base64[52]=“0”,...,Base64[61]=“9”,Base64[62]=“+”,Base64[63]=“/”特别地,Base64[Φ]=“=”,仅在必要时使用,以便将变换输出的总字符数凑足为4的整倍数。为避免混淆,与C语言源程序的规定不同,本说明书采用中文引号“”作为ASCII字符或字符串的定界符。设Y中的每个符号用8-比特字节来记录、存储和传输(以下均按这种简化观点理解“传输”以避免讨论各式各样的实际传输信道,它不影响本说明书中各变换的性能对比),采用“基数-64变换”的编码效率为6/8=75%,数据扩展率为8/6=4/3=133.33%,故通常说“基数-64变换”将3字节输入变换为4字节输出。这对信道资源宝贵的Internet是一个浪费。目前在“多用途国际互联网邮件扩展(MIME)”中使用的变换QP(Quoted-Printable),是简单地用三个可打印字符“=LR”来替换16进制记法为“LR”的8-比特数据,L、R∈{0,1,...,9,A,B,C,D,E,F}。故QP变换的自变量比特分组长度为8,编码效率为1/3,数据扩展率为300%,对Internet资源的浪费更大。据新闻媒体报道,1999年底北京大学学生张明和戚文敏发明了名称为“电子邮局”(英文缩写EPOST)的技术,其效果是加速数据在Internet中的传送和突破原电子邮件邮箱存储容量的限制;但至今未见实现技术的公开报道,也未检索到国内外相关的专利申请。本发明的目的是提供一种数字数据变换方法,它能与SMTP或稍作修订的MIME结合使用,降低在网络传输中由PGP或PEM加工(签字、压缩、加密)消息时使用“基数-64变换”导致的数据扩展,或因为使用“QP变换”导致的数据扩展,提高消息传输速度;同时降低以可打印字符方式存储该类数据的存储容量需求。本发明的目的由以下技术方案实现设计了一种从任意比特串数据到可打印字符或字的序列的变换。其主要思路是将输入消息M分组映射的比特长度,从现有技术使用的6或8,增加到13、27或20,并利用91个可打印ASCII字符的集合或可打印双字符集合的直积与并积,来设计因分组长度增加后以指数方式增大的变换像集,从而提高编码效率。以下是本发明设计的“基数-91变换”,以及它的扩展形式——“基数-91扩展变换”1.“基数-91变换”描述“基数-91变换”将输入消息M切分为13比特的分组作为自变量实施映射,该映射记为Radix-91X→Y其中,自变量或原像集X包括全部8192个13比特符号(用整数记为0,1,...,8191),和必要时用于指示末组约定一侧n个比特数据为填充数据的φn(n=1,...,12),φ1=8192,...,φ12=8203,原像集X有8204个元素;像集Y为直积R91×R91的子集,符号R91表示从95个可打印ASCII字符中除去包括“=”、“?”和空格符在内的四个字符后余下的91个字符的集合,直积R91×R91有8281个元素。定义Radix-91是X到直积R91×R91内任意选定的一个1-1映射。选取哪一个具体的1-1映射作为Radix-91,不影响本发明的效果。为实现方便,本发明首选以下映射(设R91_CH[91]是包括R91全部元素的字符组,下同)Radix-91X→Y≡(ch1,ch2)字符ch1,ch2∈R91ch1=R91_CH[X/91],ch2=R91_CH[X%91](1)这里的符号“/”和“%”为C语言中的运算符,分别表示整数除法和模除求余数运算。将输入消息M切分为13比特分组的操作,可能产生不足13比特的末分组。对这种分组,在约定一侧用n个比特补足成为完整分组后实施映射;同时在其后增加一组数据φn(n=1,...,12),并当做输入数据实施映射。双字符“=?”与“?=”分别用作输出字符串的“引导符”和“结束符”。故“基数-91变换”的输出中最多可出现93个可打印ASCII字符。按以上“基数-91变换”的变换规则,由填充比特及其指示符φn的像以及“引导符”和“结束符”导致的输出数据的额外增加不超过8个字符。所以,随输入消息M的比特数或字节数增加,本发明设计的“基数-91变换”的平均编码效率趋近于81.25%,数据扩展率趋近于123%(现有的“基数-64变换”的编码效率为75%,数据扩展率为133%)。2.“基数-91扩展变换”(27比特分组)描述集合R91的定义与上文中相同。按“基数-91变换”的思路,但输入消息分组长度由13比特增加到27比特,再设计出可打印字符或字的4字节值作为变换的像,就得到“基数-91扩展变换”。将其针对27比特分组的映射记为Radix-91+X→Y其中,自变量或原像集X包括全部227个27比特符号(用整数记为0,1,...,134217727),和必要时用于指示末组约定一侧n个比特数据为填充数据的φn(n=1,...,26),φ1=134217728,...,φ26=134217753,原像集X有227+26个元素;像集Y为直积Y0×Y0的子集,集合Y0是直积R91×R91与“汉字通信编码字符集的信息交换码集合”(包括GB2312和GB8565)或更一般的“中国、日本和韩国通用汉字编码字符集(CJKUNIFIEDIDERGRAPH)”的信息交换码集合的某个m元子集HZm的并集,即Y0={R91×R91}∪HZm整数m∈[3305,942],R91×R91元素数为8281,Y0的元素数N=8281+m≥11586,直积Y0×Y0的元素数为N2,大于X的元素数。定义Radix-91+是X到直积Y0×Y0内任意选定的一个1-1映射。在以上限定下m或N的取法,以及选取哪一个具体映射作为Radix-91+,均不影响本发明的效果。为实现方便,本发明首选m=3305,N=11586,HZm为GB2312中汉字“啊”至汉字“盈”的信息交换码(双8-比特字符,其中不同的8-比特字符有94个)的集合,[]内数字是该汉字的区位码,并选择以下具体映射Radix-91+X→Y≡(y1,y2)≡(ch1,ch2,ch3,ch4)其中整数y1,y2∈,字符ch1,ch2,ch3,ch4∈R91y1=X/N,y2=X%N(2)所以称N为“扩展的基数”。当y1<8281时ch1=R91_CH[y1/91],ch2=R91_CH[y1%91](3)当y1≥8281时ch1ch2=区位码为1601+(y1-8281)的汉字的信息交换码(4)当y2<8281时ch3=R91_CH[y2/91],ch4=R91_CH[y2%91](3’)当y2≥8281时ch3ch4=区位码为1601+(y2-8281)的汉字的信息交换码(4’)将输入消息M切分为27比特分组的操作,可能产生不足27比特的末分组。对这种分组,在约定一侧用n个比特补足成为完整分组后实施映射;同时在其后增加一组数据φn(n=1,...,26),并当做输入数据实施映射。双字符“=?”与“?=”分别用作输出字符串的“引导符”和“结束符”。按以上“基数-91扩展变换”的变换规则,由填充比特及其指示符φn的像以及“引导符”和“结束符”导致的输出数据的额外增加不超过12个字符。所以,随输入消息M的比特数或字节数增加,本发明设计的“基数-91扩展变换”(27比特分组)的平均编码效率趋近于84.375%,数据扩展率趋近于118.5%(现有的Base64变换的编码效率为75%,数据扩展率为133%)。3.“基数-91扩展变换”(20比特分组)描述集合R91、HZm与集合Y0的定义与上文中相同。按“基数-91变换”的思路,但输入消息分组长度由13比特增加到20比特,再设计出可打印字符或字的3字节值作为变换的像,就得到另一种“基数-91扩展变换”。仍然采用前面的映射记号Radix-91+X→Y其中,自变量或原像集X包括全部220个20比特符号(用整数记为0,1,...,1048575),和必要时用于指示末组约定一侧n个比特数据为填充数据的φn(n=1,...,19),φ1=1048576,...,φ19=1048594,原像集X有=220+19个元素;像集Y为直积R91×Y0的子集,Y0的元素数N≥11586,直积R91×Y0的元素数为91×N,大于X的元素数。定义Radix-91+是X到直积R91×Y0内任意选定的一个1-1映射。在以上限定下m或N的取法,以及选取哪一个具体的映射作为Radix-91+,均不影响本发明的效果。为实现方便,本发明首选m=3305,N=11586,并选择以下具体映射;Radix-91+X→Y≡(y1,y2)≡(ch1,ch2,ch3)其中,整数y1∈,y2∈,字符ch1,ch2,ch3∈R91y1=X/N,y2=X%N(5)ch1=R91_CH[y1](6)当y2<8281时ch2=R91_CH[y2/91],ch3=R91_CH[y2%91](7)当y2≥8281时ch2ch3=区位码为1601+(y2-8281)的汉字的信息交换码(8)不足20比特的末分组的处理方法,与按27比特分组的“基数-91扩展变换”类似。如同“基数-91变换”,双字符“=?”与“?=”分别用作输出字符串的“引导符”和“结束符”。由填充比特及其指示符φn的像以及“引导符”和“结束符”导致的输出数据的额外增加不超过10个字符。所以,随输入消息M的比特数或字节数增加,本发明设计的“基数-91扩展变换”(20比特分组)的平均编码效率趋近于83.33%,数据扩展率趋近于120%(现有的Base64变换的编码效率为75%,数据扩展率为133%)。本发明与MIME准用的“基数-64变换”与QP变换相比,其特点是变换分组映射的自变量比特数超过6或8,也不是6或8的整倍数,而是特意选定的13、27或20。变换设计特征对比数据见表1。表1本发明与现有技术相比,明显地提高了信息编码效率。将本发明用于信息传输时可以减少信道占用时间,节省传输费用;将本发明用于任意比特串数据按可打印字符或字方式的存储时,能节省存储空间或费用。变换性能特征对比数据见表2。表2表2中的(等量)“消息”,指表中变换的输入,而不是指具体应用中由PGP或PEM处理的用户明文消息。表2中第三行数据(“等量消息变换后经E-mail传输的时间”)只是按编码方法本身计算的结果。在实际网络传输中使用本发明时,由于待传输消息的编码效率提高,网络负荷随之减轻,网络处理信道争用(“碰撞”)的资源消耗也随之降低,故本发明的实际效果比表2中第三行数据显示的会更好。本发明的如下图1为本发明的“基数-91变换”计算机算法流程图。图2为本发明的“基数-91扩展变换”计算机算法流程图。以下结合图1对本发明作进一步的详细说明。将任意比特串数据映射为可打印ASCII字符序列,该变换方法由计算机软件实现,其特征在于采用下列步骤(1)启动计算机(或计算机已由使用本变换软件的应用程序启动);(2)将欲执行变换算法的可执行程序模块存入计算机系统的程序存储器,将程序准备就绪的输出字符集和填充比特指示数组移入内存,建立R91_CH[91]和φ[13]的表(Table);(3)参数准备及赋值(由调用本模块的程序完成)将输入字节串指针INP_STR指向待变换字节串地址,INP_Len=输入字节串长度,32比特无符号整数变量X,W=0,W中未变换的剩余比特数R=0,输出字符串OUT_STR=“=?”,输出字符串长度OL=2;(4)将程序计数器指针指向程序存储器中前述可执行程序模块入口地址,读取指令并执行操作,即执行映射变换;(5)变换的循环体过程(当INP_Len>0时执行)W的第R至第R+7比特位←从地址INP_STR处读取1个字节;调整参数R←R+8;INP_STR←INP_STR+1;INP_Len←INP_Len-1;实施分组映射如果(R≥13或INP_Len=0)则执行{X←W的低端13比特;W>>13;(即在W的低端保存剩余比特)R←R-13;ch1←R91_CH[X/91];ch2←R91_CH[X%91];将字符ch1、ch2添加到输出串OUT_CH末尾;OL←OL+2;}如果(R<0)则执行{n←-R(即末组高端n个0比特是填充比特)X←φ[n];ch1←R91_CH[X/91];ch2←R91_CH[X%91];将字符ch1、ch2添加到输出串OUT_CH末尾;OL←OL+2;}(6)在OUT_STR末尾加结束符“?=”;(7)变换模块执行结束。变换模块执行结束后,输出字符串存于OUT_STR,其长度为OL的值。[例1]参照图1和前面对该计算机程序主要技术特征的说明,首先初始化确定具体映射关系的输出字符集charR91_CH[91]={“!”“"”,...,“+”,“-”,...,“<”,“>”,“@”,...,“~”};即这里从95个可打印字符中扣除的4个字符是“=”、空格符、“,”和“?”,各符号在ASCII表中的顺序不变;故映射规则为R91_CH=“!”,R91_CH[1]=“"”,R91_CH[22]=“8”,R91_CH[67]=“g”,R91_CH[90]=“~”等等。比特填充指示数据初始化为unsignedφ[13]={0,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203};设输入消息按8-比特分段的10进制表出为unsignedcharINP_STR[5]={255,255,252,254,129};输入消息字节长度INP_Len=5,输出字符串初始化为OUT_STR=“=?”,其长度OL=2。用W表示无符号32比特变量,其比特位由高(左)到低(右)用31,...,1,0标记;用R计移入W但尚未分组的输入比特数目,这些比特总是存放在W的低R位(新读取的输入字节比特在W中紧靠原剩余比特的左侧存放)。初始化W=0,R=0。以符号“B”开头的记数为二进制数,其右端为低位比特。与图1算法流程中循环体对应的处理过程如下(1)取INP_STR=255存入W低8位,得到W=B0...011111111,R=8,INP_Len=4(2)取INP_STR[1]=255,在W中紧临低R位的左侧存入,即存入W的第8至第15位,得到W=B0...01111111111111111,R=16,INP_Len=3,此时R≥13,取出W低端13比特为X,X=8191,W>>13(即在W低位保存剩余比特,下同),成为W=B0......00000111,R=3,ch1=R91_CH[X/91]=R91_CH[90],ch2=R91_CH[X%91]=R91_CH[1]OUT_STR=“=?~"”,OL=4;(3)取INP_STR[2]=252,存入W第3至第10位,得到W=B0...011111100111,R=11,INP_Len=2;(4)取INP_STR[3]=254,存入W第11至第18位,得到W=B0...01111111011111100111,R=19,INP_Len=1,此时R≥13,取出W低端13比特为X,X=6119,W>>13,成为W=B0......00111111,R=6,ch1=R91_CH[X/91]=R91_CH[67],ch2=R91_CH[X%91]=R91_CH[22],OUT_STR=“=?~"g8”,OL=6;(5)取INP_STR[4]=129,存入W第6至第13位,得到W=B0...010000001111111,R=14,INP_Len=0,此时R≥13,取出W低端13比特为X,X=127,W>>13,成为W=B0......00001,R=1,ch1=R91_CH[X/91]=R91_CH[1],ch2=R91_CH[X%91]=R91_CH[36],OUT_STR=“=?~"g8"H”,OL=8;(6)因为INP_Len=0,取X=W=1作为完整13比特组(即在剩余比特左侧填充了12个0比特),R=R-13=-12,ch1=R91_CH[X/91]=R91_CH,ch2=R91_CH[X%91]=R91_CH[1],OUT_STR=“=?~"g8"H!"”,OL=10;(7)R<0,知n=-R=12是末组有效数据(1比特)左侧的填充0比特个数,用φ[12]=8203指出填充比特个数,并将它映射为输出X=8203,ch1=R91_CH[X/91]=R91_CH[90],ch2=R91_CH[X%91]=R91_CH[13],OUT_STR=“=?~"g8"H!"~/”,OL=12;(循环体处理过程结束)最后,在输出串末尾添加“?=”,使输出串符合Internet标准建议MIME中已编码数据的标示法。所以,对所给输入数据,“基数-91变换”的输出是字符长度为14的可打印字符串OUT_STR=“=?~"g8"H!"~/?=”,OL=14。要实施Radix-91逆变换,只需按相反的次序进行操作,并注意字符“=?”和“?=”没有原像[例1结束]。以下结合图2对本发明作进一步的详细说明。将任意比特串数据映射为可打印ASCII字符和汉字信息交换码的序列,该变换方法由计算机软件实现,其特征在于采用下列步骤(1′)启动计算机(或计算机已由使用本变换软件的应用程序启动);(2′)将欲执行变换算法的可执行程序模块存入计算机系统的程序存储器,将程序准备就绪的输出字符集、汉字信息交换码集、填充比特指示数组和常数11586移入内存,建立R91_CH[91]、HZm、φ[27]的表(Table)和常量——扩展的基数N;(3′)参数准备及赋值(由调用本模块的程序完成)将输入字节串指针INP_STR指向待变换字节串地址,INP_Len=输入字节串长度,32比特无符号整数变量X,y1,y2,W=0,W中未变换的剩余比特数R=0,输出字符串OUT_STR“=?”,输出字符串长度OL=2;(4′)将程序计数器指针指向程序存储器中前述可执行程序模块入口地址,读取指令并执行操作,即执行映射变换;(5′)变换的循环体过程(当INP_Len>0时执行)W的第R至第R+7比特位←从地址INP_STR处读取1个字节;调整参数R←R+8;INP_STR←INP_STR+1;INP_Len←INP_Len-1;实施分组映射如果(R≥27或INP_Len=0)则执行{X←W的低端27比特;W>>27;(即在W的低端保存剩余比特)R←R-27;y1←X/N;y2←X%N;当(y1<8281){ch1←R91_CH[y1/91];ch2←R91_CH[y1%91];}当(y1≥8281)ch1ch2←HZm[y1-8281];当(y2<8281){ch3←R91_CH[y2/91];ch4←R91_CH[y2%91];}当(y2≥8281)ch3ch4←HZm[y2-8281];将ch1、ch2、ch3、ch4添加到输出串OUT_CH末尾;OL←OL+4;}如果(R<0)则执行{n←-R(即末组高端n个0比特是填充比特);X←φ[n];y1←X/N;y2←X%N;当(y1<8281){ch1←R91_CH[y1/91];ch2←R91_CH[y1%91];}当(y1≥8281)ch1ch2←HZm[y1-8281];当(y2<8281){ch3←R91_CH[y2/91];ch4←R91_CH[y2%91];}当(y2≥8281)ch3ch4←HZm[y2-8281];将ch1、ch2、ch3、ch4添加到输出串OUT_CH末尾;OL←OL+4;}(6′)在OUT_STR末尾加结束符“?=”;(7′)变换模块执行结束。变换模块执行结束后,输出字符串存于OUT_STR,其长度为OL的值。[例2]本例将对输入数据unsignedcharINP_STR[6]={255,255,252,254,129,255};实施27比特分组的“基数-91扩展变换”,变换输出中作为GB2312信息交换码的双8-比特字符约定以相应汉字显示。参照图2和前面对该计算机程序主要技术特征的说明,首先初始化R91_CH[91](同例1)、HZm、φ[27]和扩展的基数N=11586。输出串初始化为OUT_STR=“=?”,其长度OL=2。采用与例1类似的比特分组拼装方案,可得到如下两个分组X1=B110111111001111111111111111=117243903X2=B000000111111111000000111111=2093119二进制记数中的间隔仅仅是为解说方便,即从左往右,X1是由INP_STR[3]低位3比特、INP_STR[2]8比特、INP_STR[1]8比特、INP_STR8比特组成,X2是由6个填充0比特、INP_STR[5]8比特、INP_STR[4]8比特、INP_STR[3]高位5比特组成。按照公式(2)、(3)、(4)、(3′)、(4′)实施映射,对X=X1,y1=X/N=10119,y2=X%N=5169y1≥8281,ch1ch2是区位码为1601+(y1-8281)=3439的汉字的信息交换码;y2<8281,ch3=R91_CH[y2/91]=R91_CH[56],ch4=R91_CH[y2%91]=R91_CH[73]第一分组变换后的结果是OUTSTR=“=?谜\m”,OL=6。对X=X2,y1=X/N=180,y2=X%N=7639y1<8281,ch1=R91_CH[y1/91]=R91_CH[1],ch2=R91_CH[y1%91]=R91_CH[79]y2<8281,ch3=R91_CH[y2/91]=R91_CH[83],ch4=R91_CH[y2%91]=R91_CH[86]第二分组变换后的结果是OUT_STR=“=?谜\m"swz”,OL=10。增加一组指示X2高端6个0比特为填充比特的分组X=φ[6]=134217733,此时y1=X/N=11584,y2=X%N=5509y1≥8281,ch1ch2是区位码为1601+(y1-8281)=4904的汉字的信息交换码;y2<8281,ch3=R91_CH[y2/91]=R91_CH[60],ch4=R91_CH[y2%91]=R91_CH[49]再加上结束符“?=”,最终的输出是OUT_STR=“=?谜\m"swz赢U?=”,OL=16。“基数-91扩展变换”的逆变换按照上述过程的逆过程进行,并注意字符“=?”和“?=”没有原像。“基数-91扩展变换”的编码效率高于“基数-91变换”[例2结束]。在实施本发明时,即使分组映射规则确定之后,将输入字节串按确定比特长度的分组拼装方案(包括比特数不足的末组的处理办法)还可能有多种选择,以致给出不同的输出字符串,但输出字符串的长度不会因为分组拼装方案不同而变化。因而,比特分组拼装方案并不影响本发明的编码效率,也不影响通过相应逆变换还原出正确的输入数据。本发明中双字符“=?”和“?=”的用法遵从MIME标准建议中关于已编码数据的标示法(参考RFC2049第二部分“MIME相容性”之9),只是作为已编码数据的字符集有扩展。但是,“基数-91变换”的输出字符不超出95个可打印ASCII字符之集,所以可以配合Internet标准SMTP使用,在PGP、PEM或稍加改进的MIME中取代“基数-64变换”或QP变换。本发明比QP变换和“基数-64变换”适用范围更广还在于,本发明由于设计了填充比特指示符φn,所以可对任意长度的输入比特数据实施变换和逆变换;而QP变换仅对比特长度为8的整倍数的输入数据使用方便,“基数-64变换”仅对比特长度为6的整倍数的输入数据使用方便。权利要求1.一种数字数据变换方法,该方法将任意比特串数据映射为可打印ASCII字符序列,该变换方法由计算机软件实现,其特征在于(1)将欲执行变换算法的可执行程序模块存入计算机系统的程序存储器,将程序准备就绪的输出字符集和填充比特指示数组移入内存,建立字符组R91_CH[91]和整数组φ[13]的表(Table);(2)将输入字节串指针指向待变换字节串地址,用变量记录输入字节串长度,将程序计数器指针指向程序存储器中前述可执行程序模块入口地址,读取指令并执行操作;(3)变换对输入数据进行分组处理,每分组的比特长度为13;(4)变换分组映射的自变量或原像集X包括全部8192个13比特符号和12个填充比特指示符φ1,...,φ12,共计8204个元素;(5)变换的输出表示中,使用93个可打印ASCII字符;(6)变换分组映射的像集Y为直积R91×R91的子集,R91是91个可打印ASCII字符的集合,可逆的1-1映射关系为Radix-91X→Y≡(ch1,ch2)字符ch1,ch2∈R91ch1=R91_CH[X/91],ch2=R91_CH[X%91](7)对不足13比特的输入数据分组,在约定一侧用n个比特填充后成为完整分组实施映射,再添加一组数据φn当做输入数据实施相同映射,其像在直积R91×R91中。2.根据权利要求1所述的数字数据变换方法,其特征在于从任意比特串到可打印ASCII字符序列的变换方法为(1)变换的基本输出字符集R91的91个可打印ASCII字符,可以从除去符号“=”、“?”和空格符之外的92个可打印ASCII字符中任意选取;(2)变换对输入数据分组实施,分组比特长度为13,在自变量集和像集确定之后,可任意选取一个具体的1-1映射实现变换;(3)变换对输入数据分组实施,在分组比特长度、自变量集和像集、具体实现变换的1-1映射确定之后,可任意选取一种比特分组拼装方案,实现输入数据按13比特长度分组;(4)在变换像的表示或编码算法中,使用非2的整数幂次的91进位制或基数。3.一种数字数据变换方法,该方法将任意比特串数据映射为可打印ASCII字符和汉字信息交换码的序列,该变换方法由计算机软件实现,其特征在于(1)将欲执行变换算法的可执行程序模块存入计算机系统的程序存储器,将程序准备就绪的输出字符集与汉字信息交换码集、填充比特指示数组和常数11586移入内存,建立R91_CH[91]、HZm[3305]、φ[27]的表(Table)和常量单元——扩展的基数N;(2)将输入字节串指针指向待变换字节串地址,用变量记录输入字节串长度,将程序计数器指针指向程序存储器中前述可执行程序模块入口地址,读取指令并执行操作;(3)变换对输入数据进行分组处理,每分组的比特长度为27;(4)变换分组映射的自变量或原像集X包括全部227个27比特符号和26个填充比特指示符φ1,...,φ26,共计227+26个元素;(5)变换的输出表示中,使用93个可打印ASCII字符和94个8-比特字符,后者的两两组合为GB2312汉字信息交换码字;(6)变换分组映射的像集Y为直积Y0×Y0的子集,Y0={R91×R91}∪HZm即Y0为直积R91×R91与HZm的并集,整数m∈[3305,942],Y0的元素数N∈[11586,942+8281],可逆的1-1映射关系为Radix-91+X→Y≡(y1,y2)≡(ch1,ch2,ch3,ch4)其中整数y1,y2∈,字符ch1,ch2,ch3,ch4∈R91y1=X/N,y2=X%N当y1<8281时,ch1=R91_CH[y1/91],ch2=R91_CH[y1%91]当y1≥8281时,ch1ch2=区位码为1601+(y1-8281)的汉字的信息交换码当y2<8281时,ch3=R91_CH[y2/91],ch4=R91_CH[y2%91]当y2≥8281时,ch3ch4=区位码为1601+(y2-8281)的汉字的信息交换码;(7)对不足27比特的输入数据分组,在约定一侧用n个比特填充后成为完整分组实施映射,再添加一组数据φn当做输入数据实施相同映射,其像在直积Y0×Y0中。4.根据权利要求3所述的数字数据变换方法,其特征在于从任意比特串到可打印ASCII字符及汉字信息交换码序列的变换方法为(1)变换的基本输出字符集R91的91个可打印ASCII字符,可以从除去符号“=”、“?”和空格符之外的92个可打印ASCII字符中任意选取,变换的基本输出双字符集HZm的m个码字,可从包括GB2312和GB8565的“汉字通信编码字符集的信息交换码集合”中任意选取,或从“中国、日本和韩国通用汉字编码字符集(CJKUNIFIEDIDERGRAPH)”的信息交换码集合中任意选取;(2)变换对输入数据分组实施,分组比特长度为27,在自变量集和像集确定之后,可任意选取一个具体的1-1映射实现变换;(3)变换对输入数据分组实施,在分组比特长度、自变量集和像集、具体实现变换的1-1映射确定之后,可任意选取一种比特分组拼装方案,实现输入数据按27比特长度分组;(4)在变换像的表示或编码算法中,使用非2的整数幂次的91进位制或基数,和N进位制或扩展的基数,N∈[11586,942+8281]。5.一种数字数据变换方法,该方法将任意比特串数据映射为可打印ASCII字符和汉字信息交换码的序列,该变换方法由计算机软件实现,其特征在于(1)将欲执行变换算法的可执行程序模块存入计算机系统的程序存储器,将程序准备就绪的输出字符集与汉字信息交换码集、填充比特指示数组和常数11586移入内存,建立R91_CH[91]、HZm[3305]、φ[20]的表(Table)和常量单元N;(2)将输入字节串指针指向待变换字节串地址,用变量记录输入字节串长度,将程序计数器指针指向程序存储器中前述可执行程序模块入口地址,读取指令并执行操作;(3)变换对输入数据进行分组处理,每分组的比特长度为20;(4)变换分组映射的自变量或原像集X包括全部220个20比特符号和19个填充比特指示符φ1,...,φ19,共计220+19个元素;(5)变换的输出表示中,使用93个可打印ASCII字符和94个8-比特字符,后者的两两组合为GB2312汉字信息交换码字;(6)变换分组映射的像集Y为直积R91×Y0的子集,Y0={R91×R91}∪HZm;(7)对不足20比特的输入数据分组,在约定一侧用n个比特填充后成为完整分组实施映射,再添加一组数据φn当做输入数据实施相同映射,其像在直积R91×Y0中。全文摘要本发明公开一种数字数据变换方法,该方法解决现有加密电子邮件或任意8-比特数据序列在传送准备时所用变换编码效率低,加重网络负荷问题。其技术关键是设计了从一般比特串到可打印ASCII字符或汉字信息交换码序列的“基数-91变换”及扩展变换。与Internet标准SMTP结合使用,本发明取代“基数-64变换”(PGP和PEM采用)能使传输时间、存储需求减少7.7%或11.11%;取代QP变换能使传输时间、存储需求减少58.97%或60.49%。主要用于Internet加密电子邮件的传输或存储。文档编号G06F17/22GK1269657SQ0011288公开日2000年10月11日申请日期2000年4月28日优先权日2000年4月28日发明者何大可,何薇申请人:西南交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1