CN1269657A - 一种数字数据变换方法 - Google Patents
一种数字数据变换方法 Download PDFInfo
- Publication number
- CN1269657A CN1269657A CN00112884A CN00112884A CN1269657A CN 1269657 A CN1269657 A CN 1269657A CN 00112884 A CN00112884 A CN 00112884A CN 00112884 A CN00112884 A CN 00112884A CN 1269657 A CN1269657 A CN 1269657A
- Authority
- CN
- China
- Prior art keywords
- bit
- character
- conversion
- packet
- radix
- 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.)
- Granted
Links
Images
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)
- Audiology, Speech & Language Pathology (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (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变换”及扩展变换。与Internet标准SMTP结合使用,本发明取代“基数-64变换”(PGP和PEM采用)能使传输时间、存储需求减少7.7%或11.11%;取代QP变换能使传输时间、存储需求减少58.97%或60.49%。主要用于Internet加密电子邮件的传输或存储。
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资源的浪费更大。据新闻媒体报道,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-91:X→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-91:X→Y≡(ch1,ch2) 字符ch1,ch2∈R91
ch1=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)或更一般的“中国、日本和韩国通用汉字编码字符集(CJK UNIFIEDIDERGRAPH)”的信息交换码集合的某个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中汉字“啊[1601]”至汉字“盈[4905]”的信息交换码(双8-比特字符,其中不同的8-比特字符有94个)的集合,[]内数字是该汉字的区位码,并选择以下具体映射:
Radix-91+:X→Y≡(y1,y2)≡(ch1,ch2,ch3,ch4)其中整数y1,y2∈[0,N-1],字符ch1,ch2,ch3,ch4∈R91
y1=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∈[0,90],y2∈[0,N-1],字符ch1,ch2,ch3∈R91
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=区位码为1601+(y2-8281)的汉字的信息交换码 (8)
不足20比特的末分组的处理方法,与按27比特分组的“基数-91扩展变换”类似。如同“基数-91变换”,双字符“=?”与“?=”分别用作输出字符串的“引导符”和“结束符”。由填充比特及其指示符φn的像以及“引导符”和“结束符”导致的输出数据的额外增加不超过10个字符。所以,随输入消息M的比特数或字节数增加,本发明设计的“基数-91扩展变换”(20比特分组)的平均编码效率趋近于83.33%,数据扩展率趋近于120%(现有的Base64变换的编码效率为75%,数据扩展率为133%)。
本发明与现有技术相比,明显地提高了信息编码效率。将本发明用于信息传输时可以减少信道占用时间,节省传输费用;将本发明用于任意比特串数据按可打印字符或字方式的存储时,能节省存储空间或费用。变换性能特征对比数据见表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[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算法流程中循环体对应的处理过程如下:(1)取INP_STR[0]=255存入W低8位,得到W=B0...011111111,R=8,INP_Len=4(2)取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;(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...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=“=?~"g8”,OL=6;(5)取INP_STR[4]=129,存入W第6至第13位,得到
W=B0...010000001 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=“=?~"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[0],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[3305]、φ[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]本例将对输入数据
unsigned char INP_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=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=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]第一分组变换后的结果是OUT STR=“=?谜\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的整倍数的输入数据使用方便。
Claims (5)
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-91:X→Y≡(ch1,ch2)字符ch1,ch2∈R91
ch1=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∈[0,N-1],字符ch1,ch2,ch3,ch4∈R91
y1=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的“汉字通信编码字符集的信息交换码集合”中任意选取,或从“中国、日本和韩国通用汉字编码字符集(CJK UNIFIED IDERGRAPH)”的信息交换码集合中任意选取;
(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中。
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 |
PCT/CN2001/000615 WO2002033828A1 (fr) | 2000-04-28 | 2001-04-26 | Procédé de conversion de données numériques |
EP01937948A EP1289151A4 (en) | 2000-04-28 | 2001-04-26 | PROCESS FOR THE CONVERSION OF DIGITAL DATA |
AU2001263734A AU2001263734A1 (en) | 2000-04-28 | 2001-04-26 | A digital data transforming method |
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 true CN1269657A (zh) | 2000-10-11 |
CN1163814C 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) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102038500A (zh) * | 2010-12-02 | 2011-05-04 | 广东宝莱特医用科技股份有限公司 | 心电图机输出文件和波形叠加方法 |
CN101470724B (zh) * | 2007-12-25 | 2011-09-28 | 英业达股份有限公司 | 字符转换系统及方法 |
CN103401561A (zh) * | 2013-07-25 | 2013-11-20 | 百度在线网络技术(北京)有限公司 | 用于地图数据的压缩和解压缩的方法及装置 |
CN105187568A (zh) * | 2015-08-12 | 2015-12-23 | 广东睿江科技有限公司 | 一种ipv4地址转换方法及装置 |
CN108052805A (zh) * | 2017-11-20 | 2018-05-18 | 北京旋极信息技术股份有限公司 | 一种数据加解密方法和装置 |
CN115630060A (zh) * | 2022-09-09 | 2023-01-20 | 中国船舶重工集团公司第七一三研究所 | 一种监控数据处理方法及系统 |
Families Citing this family (9)
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 |
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 |
EP2529331B1 (en) * | 2010-01-29 | 2015-05-20 | Hewlett Packard Development Company, L.P. | Parallel test payload |
WO2013134783A1 (en) | 2012-03-09 | 2013-09-12 | Visa International Service Association | Embedding supplemental consumer data |
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码和字符串的转换方法 |
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 AU AU2001263734A patent/AU2001263734A1/en not_active Abandoned
- 2001-04-26 US US10/240,707 patent/US6859151B2/en not_active Expired - Fee Related
- 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
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101470724B (zh) * | 2007-12-25 | 2011-09-28 | 英业达股份有限公司 | 字符转换系统及方法 |
CN102038500A (zh) * | 2010-12-02 | 2011-05-04 | 广东宝莱特医用科技股份有限公司 | 心电图机输出文件和波形叠加方法 |
CN102038500B (zh) * | 2010-12-02 | 2013-03-06 | 广东宝莱特医用科技股份有限公司 | 心电图机输出文件和波形叠加方法 |
CN103401561A (zh) * | 2013-07-25 | 2013-11-20 | 百度在线网络技术(北京)有限公司 | 用于地图数据的压缩和解压缩的方法及装置 |
CN105187568A (zh) * | 2015-08-12 | 2015-12-23 | 广东睿江科技有限公司 | 一种ipv4地址转换方法及装置 |
CN105187568B (zh) * | 2015-08-12 | 2018-09-25 | 广东睿江云计算股份有限公司 | 一种ipv4地址转换方法及装置 |
CN108052805A (zh) * | 2017-11-20 | 2018-05-18 | 北京旋极信息技术股份有限公司 | 一种数据加解密方法和装置 |
CN115630060A (zh) * | 2022-09-09 | 2023-01-20 | 中国船舶重工集团公司第七一三研究所 | 一种监控数据处理方法及系统 |
CN115630060B (zh) * | 2022-09-09 | 2023-09-29 | 中国船舶重工集团公司第七一三研究所 | 一种监控数据处理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
AU2001263734A1 (en) | 2002-04-29 |
EP1289151A1 (en) | 2003-03-05 |
CN1163814C (zh) | 2004-08-25 |
US20030152220A1 (en) | 2003-08-14 |
EP1289151A4 (en) | 2007-04-25 |
WO2002033828A8 (fr) | 2002-08-08 |
US6859151B2 (en) | 2005-02-22 |
WO2002033828A1 (fr) | 2002-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1269657A (zh) | 一种数字数据变换方法 | |
CN1236582C (zh) | 伪随机序列发生器及有关的方法 | |
CN1819513A (zh) | Cpk id证书及其生成方法 | |
WO1997018652A1 (en) | Efficient cryptographic hash functions and methods for amplifying the security of hash functions and pseudo-random functions | |
CN1168041A (zh) | 加密和解密方法以及加密和解密装置 | |
CN1816170A (zh) | 短信收发的编码转换方法及其应用的网络设备 | |
CN110266682A (zh) | 数据加密方法、装置、移动终端及解密方法 | |
TWI461003B (zh) | 數據解碼方法 | |
CN107798708A (zh) | 一种dna乱序编码和混沌映射的图像加密和解密方法 | |
CN108052805A (zh) | 一种数据加解密方法和装置 | |
CN104657432A (zh) | 一种降低长地址转换为短地址重复率的方法 | |
CN1441555A (zh) | 改进的哈夫曼译码方法和装置 | |
CN1355632A (zh) | 可变大小的密钥以及使用该密钥的方法和装置 | |
CN1663162A (zh) | 用于对数字数据序列进行编码以及解码的方法和装置 | |
CN104301310A (zh) | 基于条码传真识别技术的隔离网络数据交换方法与系统 | |
CN1627275A (zh) | 将文件分割存储和还原处理的方法和系统 | |
CN109358901A (zh) | 一种可解码点阵字库的处理器芯片及实现方法 | |
CN116010984A (zh) | 一种关系型数据库数据多重加密存储方法、装置及设备 | |
CN1425987A (zh) | 强化错乱的分组密码加密方法 | |
CN1169326C (zh) | 异步传输模式交换装置及其方法 | |
CN109818743A (zh) | 一种椭圆曲线公钥文本化传递方法及系统 | |
CN109905241B (zh) | 一种椭圆曲线公钥的短汉字编码、解码方法 | |
CN102833069A (zh) | 基于明码与密码相结合的跨平台电子凭证 | |
CN1464678A (zh) | 基于半群上离散对数问题的数字签名及验证的方法 | |
CN1245695C (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 |