CN1163814C - 一种数字数据变换方法 - Google Patents
一种数字数据变换方法 Download PDFInfo
- Publication number
- CN1163814C CN1163814C CNB001128841A CN00112884A CN1163814C CN 1163814 C CN1163814 C CN 1163814C CN B001128841 A CNB001128841 A CN B001128841A CN 00112884 A CN00112884 A CN 00112884A CN 1163814 C CN1163814 C CN 1163814C
- Authority
- CN
- China
- Prior art keywords
- radix
- bit
- conversion
- character
- group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/02—Conversion to or from weighted codes, i.e. the weight given to a digit depending on the position of the digit within the block or code word
- H03M7/04—Conversion to or from weighted codes, i.e. the weight given to a digit depending on the position of the digit within the block or code word the radix thereof being two
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/126—Character encoding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开一种数字数据变换方法,该方法解决现有加密电子邮件或任意8比特数据序列在传送准备时所用变换编码效率低,加重网络负荷问题。其技术关键是设计了从一般比特串到可打印ASCII字符或汉字信息交换码序列的“基数-91变换”(记为Base91或Radix-91)及“基数-91扩展变换”(记为Base91+或Radix-91+)。本发明的变换,其输出具有可打印特点,作为定长分组变换能在变换输出中标记不足长输入分组的填充比特数。与Intemet标准SMTP、MIME结合使用,本发明的“基数-91变换”(“基数-91扩展变换”)取代“基数-64变换”(MIME、PGP、PEM等采用)能使传输数据量或存储需求减少7.7%(11.11%);取代QP变换可能使传输数据量或存储需求减少58.97%(60.49%)。主要用于Intemet电子邮件和压缩数据的传输或存储。
Description
技术领域
本发明涉及信息处理技术领域,特别涉及数字加密、数字签字、数据压缩等信息处理
技术领域。
背景技术
随着Internet国际互联网及其商业应用的迅猛发展,E-mail(电子邮件)的安全保密问题越来越突出。1991年出现了主要用于E-mail加密的密码系统PGP(Pretty Good Privacy),以及于1993年发布最后文本的Internet标准建议草案PEM(Privacy Enhanced Mail)。如今,PGP密码系统大约被全世界三亿Internet个人用户中的半数用于E-mail加密;而PEM正在被越来越多的Internet企业用户采用,成为电子商务安全的一个基础。PGP和PEM都能为用户提供消息的保密和认证功能,以及与E-mail的兼容性;PGP还为用户提供消息的压缩功能。所谓与E-mail兼容,就是把准备用E-mail传送的任意8比特数据字节(Byte)串或任意比特流数据,变换为有限制的ASCII(American Standard Code for Information Interchange)字符的串。对后者的主要限制有:(1)字符可打印;(2)字符集中不包含控制字符。这样的ASCII字符共有95个,其对应的10进制编码是从32到126的全部整数。由这样的ASCII字符书写的邮件符合Internet标准SMTP(Simple Mail Transfer Protocol),能在几乎所有的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[0]=“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资源的浪费更大。
发明内容
本发明的目的是提供一种数字数据变换方法,它能在稍作修订的MIME中使用,降低在网络传输中由PGP或PEM加工(签字、压缩、加密)消息时使用“基数-64变换”导致的数据扩展,或因为使用“Qp变换”导致的数据扩展,提高消息传输速度;同时降低以可打印字符方式存储该类数据的存储容量需求。
本发明的目的由以下技术方案实现:设计了一种从任意比特串数据到可打印字符或字的序列的变换。其主要思路是:将输入消息M分组映射的比特长度,从现有技术使用的6或8,增加到13、27或20,并利用91个可打印ASCII字符的集合或可打印双字符集合的直积与并积,来设计因分组长度增加后以指数方式增大的变换像集,从而提高编码效率。以下是本发明设计的“基数-91变换”(也记为Radix-91或Base91),以及它的扩展形式——“基数-91扩展变换”(也记为Radix-91+或Base91+)。Radix-91或Base91是中文“基数-91”的两种常用英译。
1.“基数-91变换”描述
“基数-91变换”(Radix-91)将输入消息M切分为13比特的分组作为自变量实施映射,该映射记为
Radix-91:X→Y
其中,自变量或原像集X包括全部8192个13比特符号(用整数记为0,1,...,8191),和必要时用于指示末组左侧n个比特数据为填充数据的φn(n=1,...,12),φ1=8192,...,φ12=8203,即φn=8191+n,1≤n≤12,原像集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-91[x]=(ch1,ch2)x∈X,字符ch1,ch2∈R91
ch1=R91_CH[x/91],ch2=R91_CH[x%91] (1)
这里的符号“/”和“%”为C语言中的运算符,分别表示整数除法和模除求余数运算。
将输入消息M切分为13比特分组的操作,可能产生不足13比特的术分组。对这种分组,在其左侧用n个0比特补足成为完整分组后实施映射;同时在其后增加一组数据φn(n=1,...,12即1≤n≤12),并当做输入数据实施映射。双字符“=?”与“?=”分别用作输出字符串的“引导符”和“结束符”。故“基数-91变换”的输出中最多可出现92个可打印ASCII字符。
按以上“基数-91变换”的变换规则,由填充比特及其指示符φn的像以及“引导符”和“结束符”导致的输出数据的额外增加不超过8个字符。所以,随输入消息M的比特数或字节数增加,本发明设计的“基数-91变换”的平均编码效率趋近于81.25%,数据扩展率趋近于123%(现有的“基数-64变换”的编码效率为75%,数据扩展率为133%)。
2.“基数-91扩展变换”(27比特分组)描述
集合R91与字符组R91_CH[91]的定义与上文中相同。按“基数-91变换”的思路,但输入消息分组长度由13比特增加到27比特,再设计出可打印字符或字的4字节值作为变换的像,就得到“基数-91扩展变换”(Radix-91+)。将其针对27比特分组的映射记为
Radix-91+:X→Y
其中,自变量或原像集X包括全部227个27比特符号(用整数记为0,1,...,134217727),和必要时用于指示末组左侧n个比特数据为填充数据的φn(n=1,...,26),φ1=134217728,...,φ26=134217753,即φn=134217727+n,1≤n≤26,原像集X有227+26个元素;像集Y为直积Y0×Y0的子集,集合Y0是直积R91×R91与“汉字通信编码字符集的信息交换码集合”(包括GB2312和GB8565)或更一般的“中国、日本和韩国通用汉字编码字符集(CJK UNIFIED IDERGRAPH)”的信息交换码集合的某个m元子集HZm的并集,即
Y0={R91×R91}∪HZm
其中,符号“∪”为集合求并集的运算符,整数m∈[3305,942],R91×R91元素数为8281,Y0的元素数N=8281+m≥11586,称N为“扩展的基数”,直积Y0×Y0的元素数为N2,大于X的元素数。
定义Radix-91+是X到直积Y0×Y0内任意选定的一个1-1映射。在以上限定下m或N的取法,以及选取哪一个具体映射作为Radix-91+,均不影响本发明的效果。为实现方便,本发明首选m=3305,N=11586,将HZm具体定义为数据类型为word(字或双字符)的组,即HZm为GB2312中汉字“啊”至汉字“盈”的信息交换码(双8比特字符,其中不同的8比特字符有94个)的集合。
“基数-91扩展变换”(27比特分组)的分组映射规则是:
Radix-91+[x]=(ch1,ch2,ch3,ch4),x∈X,
即Radix-91+(27比特分组)将原像x映射为四个字符ch1、ch2、ch3、ch4,它们的值由式(2)、(3)、(4)、(3’)、(4’)确定:
y1=x/N,y2=x%N, (2)
整数y1,y2∈[0,N-1],所以称N为“扩展的基数”。
当y1<8281时
ch1=R91_CH[y1/91],ch2=R91_CH[y1%91] (3)
当y1≥8281时
ch1ch2=HZm[y1-8281] (4)
当y2<8281时
ch3=R91_CH[y2/91],ch4=R91_CH[y2%91] (3’)
当y2≥8281时
ch3ch4=HZm[y2-8281] (4’)
以上定义式组还表明(与“基数-91变换”分组映射是可逆映射的分析类似),“基数-91扩展变换”(27比特分组)的分组映射是可逆映射。
将输入消息M切分为27比特分组的操作,可能产生不足27比特的末分组。对这种分组,在其左侧用n个0比特补足成为完整分组后实施映射;同时在其后增加一组数据φn(n=1,...,26即1≤n≤26),并当做输入数据实施映射。双字符“=?”与“?=”分别用作输出字符串的“引导符”和“结束符”。
按以上“基数-91扩展变换”(27比特分组)的变换规则,由填充比特及其指示符φn的像以及“引导符”和“结束符”导致的输出数据的额外增加不超过12个字符。所以,随输入消息M的比特数或字节数增加,本发明设计的“基数-91扩展变换”(27比特分组)的平均编码效率趋近于84.375%,数据扩展率趋近于118.5%(现有的Base64变换的编码效率为75%,数据扩展率为133%)。
3.“基数-91扩展变换”(20比特分组)描述
集合R91、字符组R91_CH[91]、集合HZm与集合Y0的定义与上文中相同。按“基数-91变换”的思路,但输入消息分组长度由13比特增加到20比特,再设计出可打印字符或字的3字节值作为变换的像,就得到另一种“基数-91扩展变换”。仍然采用前面的映射记号,将其针对20比特分组的映射记为
Radix-91+:X→Y
其中,自变量或原像集X包括全部220个20比特符号(用整数记为0,1,...,1048575),和必要时用于指示末组左侧n个比特数据为填充数据的φn(n=1,...,19),φ1=1048576,...,φ19=1048594,即φn=1048575+n,1≤n≤19,原像集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。
“基数-91扩展变换”(20比特分组)的分组映射规则是:
Radix-91+[x]=(ch1,ch2,ch3),x∈X,
即Radix-91+(20比特分组)将原像x映射为三个字符ch1、ch2、ch3,它们的值由式(5)、(6)、(7)、(8)确定:
y1=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=HZm[y2-8281] (8)
以上定义式组还表明(与“基数-91变换”分组映射是可逆映射的分析类似),“基数-91扩展变换”(20比特分组)的分组映射是可逆映射。
不足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。
本发明与现有技术相比,明显地提高了信息编码效率。将本发明用于信息传输时可以减少信道占用时间,节省传输费用;将本发明用于任意比特串数据按可打印字符或字方式的存储时,能节省存储空间或费用。变换性能特征对比数据见表2。
表2
表2中的(等量)“消息”,指表中变换的输入,而不是指具体应用中由PGP或PEM处理的用户明文消息。表2中第三行数据(“等量消息变换后经E-mail传输的时间”)只是按编码方法本身计算的结果。在实际网络传输中使用本发明时,由于待传输消息的编码效率提高,网络负荷随之减轻,网络处理信道争用(“碰撞”)的资源消耗也随之降低,故本发明的实际效果比表2中第三行数据显示的会更好。
附图说明
本发明的附图说明如下:
图1为本发明的“基数-91变换”计算机算法流程图。
图2为本发明的“基数-91扩展变换”计算机算法流程图。
以下结合图1对本发明作进一步的详细说明。
将任意比特串数据映射为可打印ASCII字符序列,该变换方法由计算机软件实现,其特征在于采用下列步骤:
(1)启动计算机(或计算机已由使用本变换软件的应用程序启动);
(2)将欲执行变换算法的可执行程序模块存入计算机系统的程序存储器,将程序准备就绪的输出字符集和填充比特指示数组移入内存,建立R91_CH[91]和φ[13];
(3)参数准备及赋值(由调用本模块的程序完成):将输入字节串指针INP_STR指向待变换字节串地址,INP_Len=输入字节串长度,32比特无符号整数变量X,W=0,W中未变换的剩余比特数R=0,输出字符串OUT_STR=“=?”,输出字符串长度OL=2;
(4)将程序计数器指针指向程序存储器中前述可执行程序模块入口地址,读取指令并执行循环体A循环操作,当(INP_Len>0)不成立时结束循环;
循环体A:(当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添加到输出串末尾;OL←OL+2;}
如果(R<0)则执行
{n←-R;(即末组高端n个0比特是填充比特)
x←φ[n];ch1←R91_CH[x/91];ch2←R91_CH[x%91];
将字符ch1、ch2添加到输出串末尾;OL←OL+2;}
(5)在OUT_STR末尾加结束符“?=”;
(6)变换模块执行结束。
变换模块执行结束后,输出字符串存于OUT_STR,其长度为OL的值。
以下结合图2对本发明作进一步的详细说明。
将任意比特串数据映射为可打印ASCII字符和汉字信息交换码的序列,该变换方法由计算机软件实现,其特征在于采用下列步骤:
(1′)启动计算机(或计算机已由使用本变换软件的应用程序启动);
(2′)将欲执行变换算法的可执行程序模块存入计算机系统的程序存储器,将程序准备就绪的输出字符集、汉字信息交换码集、填充比特指示数组和常数11586移入内存,建立字符组R91_CH[91]、汉字信息交换码组HZm[3305]和填充比特指示数组
unsigned φ[27]={0,134217728,...,134217753};
φ[27]包含的27个整数是0和134217728至134217753的26个连续整数,并且按递增次序排列,和扩展的基数N;
(3′)参数准备及赋值(由调用本模块的程序完成):将输入字节串指针INP_STR指向待变换字节串地址,INP_Len=输入字节串长度,32比特无符号整数变量x,y1,y2,W=0,W中未变换的剩余比特数R=0,输出字符串OUT_STR=“=?”,输出字符串长度OL=2;
(4′)将程序计数器指针指向程序存储器中前述可执行程序模块入口地址,读取指令并执行循环体B循环操作,当(INP_Len>0)不成立时结束循环;循环体B:(当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添加到输出串末尾;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添加到输出串末尾;OL←OL+4;
}
(5′)在输出串OUT_STR末尾加结束符“?=”;
(6′)变换模块执行结束。
变换模块执行结束后,输出字符串存于OUT_STR,其长度为OL的值。
具体实施方式
[例1]参照图1和前面对该计算机程序主要技术特征的说明,首先初始化确定具体映射关系的输出字符集
char R91_CH[91]={“!”,“″”,...,“+”,“-”,...,“<”,“>” “@”,...,“~”};即这里从95个可打印字符中扣除的4个字符是:“=”、空格符、“,”和“?”,各符号在ASCII表中的顺序不变;故映射规则为:R91_CH[0]=“!”,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进制表出为
unsigned char INP_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算法流程中循环体A对应的处理过程如下:
(a)取INP_STR[0]=255存入W低8位,得到W=B0...011111111,R=8,INP_Len=4;
(b)取INP_STR[1]=255,在W中紧临低R位的左侧存入,即存入W的第8至第15位,得到W=B0...011111111 11111111,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;
(c)取INP_STR[2]=252,存入W第3至第10位,得到W=B0...011111100111,R=11,INP_Len=2;
(d)取INP_STR[3]=254,存入W第11至第18位,得到W=B0...011111110 11111100111,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=“=?~″g9”,OL=6;
(e)取INP_STR[4]=129,存入W第6至第13位,得到W=B0...0 10000001 111111,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=“=?~″g9″H”,OL=8;
(f)因为INP_Len=0,取x=W=1作为完整13比特组(即在剩余比特左侧填充了12个0比特),R=R-13=-12,ch1=R91_CH[x/91]=R91_CH[0],ch2=R91_CH[x%91]=R91_CH[1],OUT_STR=“=?~″g9″H!″”,OL=10;
(g)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=“=?~″g9″H!″~0”,OL=12;(循环体A处理过程结束)
最后,在输出串末尾添加“?=”,使输出串符合Internet标准建议MIME中已编码数据的标示法。所以,对所给输入数据,“基数-91变换”的输出是字符长度为14的可打印字符串OUT_STR=“=?~″g9″H!″~0?=”,OL=14。要实施Radix-91逆变换,只需按相反的次序进行操作,并注意字符“=?”和“?=”没有原像[例1结束]。
[例2]本例将对输入数据
unsigned char INP_STR[6]={255,255,252,254,129,255};
实施27比特分组的“基数-91扩展变换”,变换输出中作为GB2312信息交换码的双8比特字符约定以相应汉字显示。参照图2和前面对该计算机程序主要技术特征的说明,首先初始化R91_CH[91](同例1)、HZm[3305]、φ[27]和扩展的基数N=11586。输出串初始化为OUT_STR=“=?”,其长度OL=2。采用与例1类似的比特分组拼装方案,可得到如下两个分组:
x1=B 110 11111100 11111111 11111111=117243903
x2=B 000000 11111111 10000001 11111=2093119
二进制记数中的间隔仅仅是为解说方便,即从左往右,x1是由
INP_STR[3]低位3比特、INP_STR[2]8比特、INP_STR[1]8比特、INP_STR[0]8比特组成,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=5169
y1≥8281,ch1ch2=HZm[y1-8281]=HZm[1838]=“谜”;y2<8281,
ch3=R91_CH[y2/91]=R91_CH[56],ch4=R91_CH[y2%91]=R91_CH[73]
第一分组变换后的结果是OUT_STR=“=?谜\m”,OL=6。对x=x2,
y1=x/N=180,y2=x%N=7639
y1<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=5509;
y1≥8281,ch1ch2=HZm[y1-8281];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的整倍数的输入数据使用方便。
Claims (2)
1.一种数字数据变换方法,该方法将任意比特串数据映射为可打印ASCII字符序列,该变换方法由计算机软件实现,采用“基数-91变换”对输入数据进行分组处理,其特征在于:
(1)“基数-91变换”将欲执行该变换算法的可执行程序模块存入计算机系统的程序存储器,将程序准备就绪的输出字符集和填充比特指示数组移入内存,建立字符组R91_CH[91]和整数组φ[13];
(2)“基数-91变换”将输入字节串指针指向待变换字节串地址,用变量记录输入字节串长度,将程序计数器指针指向程序存储器中前述可执行程序模块入口地址,读取指令并执行循环体A循环操作;
(3)“基数-91变换”对输入数据进行分组处理,每分组的比特长度为13;
(4)“基数-91变换”分组映射的自变量或原像集X包括全部8192个13比特符号和12个填充比特指示符φn=8191+n,1≤n≤12,共计8204个元素;
(5)“基数-91变换”的输出表示中,使用91个可打印ASCII字符;
(6)“基数-91变换”分组映射的像集Y为直积R91×R91的子集,R91是91个可打印ASCII字符的集合,可逆的1-1映射关系为
Radix-91[x]=(ch1,ch2),x∈X,字符ch1,ch2∈R91
ch1=R91_CH[x/91],ch2=R91_CH[x%91]
(7)“基数-91变换”对不足13比特的输入数据分组,在其左侧用n个0比特填充后成为完整分组实施映射,再添加一组数据φn当做输入数据实施相同映射,其像在直积R91×R91中。
2.一种数字数据变换方法,该方法将任意比特串数据映射为可打印ASCII字符和汉字信息交换码的序列,该变换方法由计算机软件实现,采用每分组的比特长度为27的“基数-91扩展变换”对输入数据进行分组处理,其特征在于:
(1)“基数-91扩展变换”将欲执行该变换算法的可执行程序模块存入计算机系统的程序存储器,将程序准备就绪的输出字符集与汉字信息交换码集、填充比特指示数组和常数11586移入内存,建立字符组R91_CH[91]、汉字信息交换码双字符组HZm[3305]、整数组φ[27]和常量单元——扩展的基数N;
(2)“基数-91扩展变换”将输入字节串指针指向待变换字节串地址,用变量记录输入字节串长度,将程序计数器指针指向程序存储器中前述可执行程序模块入口地址,读取指令并执行循环体B循环操作;
(3)“基数-91扩展变换”对输入数据进行分组处理,每分组的比特长度为27;
(4)“基数-91扩展变换”分组映射的自变量或原像集X包括全部227个27比特符号和26个填充比特指示符φn=134217727+n,1≤n≤26,共计227+26个元素;
(5)“基数-91扩展变换”的输出表示中,使用91个可打印ASCII字符和94个8比特字符,后者的两两组合为GB2312汉字信息交换码字;
(6)“基数-91扩展变换”分组映射的像集Y为直积Y0×Y0的子集,
Y0={R91×R91}∪HZm
即Y0为直积R91×R91与HZm的并集,整数m=3305,Y0的元素数=11586,可逆的1-1映射关系为
Radix-91+[x]=(ch1,ch2,ch3,ch4)
其中字符ch1,ch2,ch3,ch4的值由以下公式确定:
y1=x/N,y2=x%N,整数y1,y2∈[0,N-1]
当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]
(7)“基数-91扩展变换”对不足27比特的输入数据分组,在其左侧用n个0比特填充后成为完整分组实施映射,再添加一组数据φn当做输入数据实施相同映射,其像在直积Y0×Y0中。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB001128841A CN1163814C (zh) | 2000-04-28 | 2000-04-28 | 一种数字数据变换方法 |
US10/240,707 US6859151B2 (en) | 2000-04-28 | 2001-04-26 | Digital data transforming method |
AU2001263734A AU2001263734A1 (en) | 2000-04-28 | 2001-04-26 | A digital data transforming method |
EP01937948A EP1289151A4 (en) | 2000-04-28 | 2001-04-26 | PROCESS FOR THE CONVERSION OF DIGITAL DATA |
PCT/CN2001/000615 WO2002033828A1 (fr) | 2000-04-28 | 2001-04-26 | Procédé de conversion de données numériques |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB001128841A CN1163814C (zh) | 2000-04-28 | 2000-04-28 | 一种数字数据变换方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1269657A CN1269657A (zh) | 2000-10-11 |
CN1163814C true CN1163814C (zh) | 2004-08-25 |
Family
ID=4582709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB001128841A Expired - Lifetime CN1163814C (zh) | 2000-04-28 | 2000-04-28 | 一种数字数据变换方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6859151B2 (zh) |
EP (1) | EP1289151A4 (zh) |
CN (1) | CN1163814C (zh) |
AU (1) | AU2001263734A1 (zh) |
WO (1) | WO2002033828A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102004021956A1 (de) * | 2004-05-04 | 2005-12-01 | Siemens Ag | Verfahren zur Ermittlung der Struktur eines Kommunikationsnetzwerkes |
WO2006000653A1 (fr) * | 2004-05-26 | 2006-01-05 | France Telecom | Procede et plate-forme de manipulation de donnees securisees |
CN101470724B (zh) * | 2007-12-25 | 2011-09-28 | 英业达股份有限公司 | 字符转换系统及方法 |
CN101286819B (zh) * | 2008-05-07 | 2010-05-12 | 中兴通讯股份有限公司 | 一种数据接收方法及装置 |
US8164492B2 (en) * | 2009-05-04 | 2012-04-24 | Touch Technologies, Inc. | Apparatus and method for fast data encoding and decoding |
US8797193B2 (en) * | 2010-01-29 | 2014-08-05 | Hewlett-Packard Development Company, L.P. | Parallel test payload |
CN102038500B (zh) * | 2010-12-02 | 2013-03-06 | 广东宝莱特医用科技股份有限公司 | 心电图机输出文件和波形叠加方法 |
WO2013134783A1 (en) | 2012-03-09 | 2013-09-12 | Visa International Service Association | Embedding supplemental consumer data |
CN103401561A (zh) * | 2013-07-25 | 2013-11-20 | 百度在线网络技术(北京)有限公司 | 用于地图数据的压缩和解压缩的方法及装置 |
CN105187568B (zh) * | 2015-08-12 | 2018-09-25 | 广东睿江云计算股份有限公司 | 一种ipv4地址转换方法及装置 |
CN105100111A (zh) * | 2015-08-26 | 2015-11-25 | 成都卫士通信息产业股份有限公司 | 一种信息传输保护方法和系统 |
CN105245315A (zh) * | 2015-10-27 | 2016-01-13 | 成都卫士通信息产业股份有限公司 | 一种采用编码实现信息保密存储的方法和系统 |
CN106897259A (zh) * | 2017-02-28 | 2017-06-27 | 郑州云海信息技术有限公司 | 一种基于windows平台的ascii码和字符串的转换方法 |
CN108052805B (zh) * | 2017-11-20 | 2021-07-30 | 北京旋极信息技术股份有限公司 | 一种数据加解密方法和装置 |
CN115630060B (zh) * | 2022-09-09 | 2023-09-29 | 中国船舶重工集团公司第七一三研究所 | 一种监控数据处理方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2830884B2 (ja) * | 1992-02-06 | 1998-12-02 | 日本電気株式会社 | 多重文字コードセットの入出力変換方式 |
US5602921A (en) | 1994-12-15 | 1997-02-11 | Pitney Bowes Inc. | Postage accounting system including means for transmitting ASCII encoded variable information for driving an external printer |
US5687366A (en) * | 1995-05-05 | 1997-11-11 | Apple Computer, Inc. | Crossing locale boundaries to provide services |
US5682158A (en) * | 1995-09-13 | 1997-10-28 | Apple Computer, Inc. | Code converter with truncation processing |
US5929792A (en) | 1997-06-30 | 1999-07-27 | Sun Microsystems, Inc. | Method and apparatus for encoding multiple character sets |
-
2000
- 2000-04-28 CN CNB001128841A patent/CN1163814C/zh not_active Expired - Lifetime
-
2001
- 2001-04-26 WO PCT/CN2001/000615 patent/WO2002033828A1/zh not_active Application Discontinuation
- 2001-04-26 EP EP01937948A patent/EP1289151A4/en not_active Withdrawn
- 2001-04-26 US US10/240,707 patent/US6859151B2/en not_active Expired - Fee Related
- 2001-04-26 AU AU2001263734A patent/AU2001263734A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
WO2002033828A8 (fr) | 2002-08-08 |
US6859151B2 (en) | 2005-02-22 |
US20030152220A1 (en) | 2003-08-14 |
AU2001263734A1 (en) | 2002-04-29 |
WO2002033828A1 (fr) | 2002-04-25 |
CN1269657A (zh) | 2000-10-11 |
EP1289151A4 (en) | 2007-04-25 |
EP1289151A1 (en) | 2003-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1163814C (zh) | 一种数字数据变换方法 | |
CN1801188A (zh) | 一种矩阵式二维条码及其编码解码方法 | |
CN1532659A (zh) | Usb键装置与通过usb端口与usb主机交互的方法 | |
CN1251715A (zh) | 有限域离散对数密码系统的割圆多项式结构 | |
CN2585495Y (zh) | 使用码分多址的无线通信系统的物理层处理 | |
CN1040276A (zh) | 简繁字根汉字输入技术及其键盘 | |
CN1940981A (zh) | 电子标书的制作装置和方法、应用系统和方法 | |
CN1530824A (zh) | 用于执行蒙哥马利型模乘法的装置及方法 | |
CN1831900A (zh) | 解密装置和解密方法 | |
CN1338166A (zh) | 公用与专用密钥加密方法 | |
CN1238988C (zh) | 密钥信息生成的方法和装置、内容信息加密与解密的方法和装置 | |
CN1236582C (zh) | 伪随机序列发生器及有关的方法 | |
CN1663173A (zh) | 信息处理方法、信息处理设备、程序和存储媒体 | |
CN1355632A (zh) | 可变大小的密钥以及使用该密钥的方法和装置 | |
CN1244057C (zh) | 内容服务器装置和内容提供方法 | |
CN1180351C (zh) | 强化错乱的分组密码加密方法 | |
CN1536769A (zh) | 随机序列产生设备、加密/解密设备及其方法和程序 | |
CN1921376A (zh) | 基于并行td-ercs混沌系统的伪随机数发生器 | |
CN1169326C (zh) | 异步传输模式交换装置及其方法 | |
CN1601913A (zh) | 平行化循环冗余码计算方法及系统 | |
CN1894884A (zh) | 内容分发服务器、密钥分配方法、内容输出设备及密钥发布中心 | |
CN2864808Y (zh) | 椭圆曲线加密算法的协处理器 | |
CN1620644A (zh) | 使用模乘法逆执行多模转换的设备和方法 | |
CN1032985C (zh) | 多级结构汉字字库及其操作系统 | |
CN1573911A (zh) | 字符生成设备、字符生成方法、字符生成程序和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20001011 Assignee: Shenzhen Yongda electronic Touchplus information Corp Assignor: Southwest Jiaotong University Contract record no.: 2017440020099 Denomination of invention: Digital data converting method Granted publication date: 20040825 License type: Exclusive License Record date: 20171215 |
|
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20040825 |