CN101697116B - 数据变换方法及装置 - Google Patents
数据变换方法及装置 Download PDFInfo
- Publication number
- CN101697116B CN101697116B CN200910236912.8A CN200910236912A CN101697116B CN 101697116 B CN101697116 B CN 101697116B CN 200910236912 A CN200910236912 A CN 200910236912A CN 101697116 B CN101697116 B CN 101697116B
- Authority
- CN
- China
- Prior art keywords
- data
- transformed
- length
- serial data
- play amount
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种数据变换方法及装置,涉及数据的处理算法领域,解决了目前变换方法比较复杂的问题。本发明从待变换数据串的预定位置获取偏移量;根据所述偏移量从待变换数据串中获取预定位数的数据;将所获取的数据变换为十进制数据;判断所述十进制数据的长度是否小于第一预定长度;如果所述十进制数据的长度不小于第一预定长度,则从所述十进制数据的低位开始连续取第一预定长度的数据作为变换后的数据;如果所述十进制数据的长度小于第一预定长度,则将所述十进制数据的高位补零至第一预定长度,并将高位补零后的数据作为变换后的数据。本发明主要用在各种需要进行数据变换的设备和方法中,如:动态口令的生成过程和设备。
Description
技术领域
本发明涉及数据的处理算法领域,尤其涉及数据变换方法及装置。
背景技术
在使用各种计算机网络的时候,需要采用各种方式保证网络安全,例如:对计算出消息摘要(Message Digest)以保证消息的完整性,或者对用户输入的口令进行验证以确保用户的合法性。
其中消息摘要应用原理为:消息发送方通过单向Hash(哈希)加密函数对需要发送的消息进行计算得出消息摘要,然后将消息和计算出的消息摘要同时发送给接收方,接收方在接收到消息后按照消息发送方相同的方法计算出消息摘要,如果消息在发送的途中被篡改,那么计算出的消息摘要和接收到的消息摘要是不会相同的;接收方只需要将计算出的消息摘要与接收到的消息摘要进行比较就可知道消息是否被篡改了。因此消息摘要保证了消息的完整性。该方案中采用单向Hash函数从需要发送的消息中计算出一串消息摘要,这一串消息摘要亦称为数字指纹(Finger Print);消息摘要的数据长度是固定的,并且不同的消息得到的消息摘要总是不同的,而同样的消息多次得到消息摘要必定一致。故而,消息摘要可验证所接收的消息是否完整正确。
进行口令验证的原理为:首先需要通过一串随机产生的数字或符号生成口令,将该口令以一幅图片的形式输出,并在图片里加上一些干扰元素,由用户肉眼识别图片中的口令信息,并将口令输入表单提交,服务器对用户输入的口令进行验证,在验证成功后才能使用服务器提供的功能。
在实现上述消息摘要或口令验证的过程中,发明人发现现有技术中至少存在如下问题:在上述两项技术中都需要利用某种数据变换成另外一种数据,例如:从消息中转换出消息摘要,从随机数字或符号中生成口令;目前各个方案中都采用了不同的数据变换方法,并且各自的变换方法比较复杂。
发明内容
本发明提供一种数据变换方法及装置,使得数据变换方法较为简单。
为达到上述目的,本发明采用如下技术方案:
一种数据变换方法,包括:
从待变换数据串的预定位置获取偏移量;
根据所述偏移量从待变换数据串中获取预定位数的数据;
将所获取的数据变换为十进制数据;
判断所述十进制数据的长度是否小于第一预定长度;
如果所述十进制数据的长度不小于第一预定长度,则从所述十进制数据的低位开始连续取第一预定长度的数据作为变换后的数据;
如果所述十进制数据的长度小于第一预定长度,则将所述十进制数据的高位补零至第一预定长度,并将高位补零后的数据作为变换后的数据;
所述预定位置包括所述待变换数据串的第一个字节、中间任意一个字节、或最后一个字节;
所述从待变换数据串的预定位置获取偏移量包括下列两种方法之一:
从待变换数据串的预定位置对应字节中取出4个比特位或8个比特位;
判断所取出比特位对应的十进制数是否超过待变换数据串长度;
如果所取出比特位对应的十进制数不超过待变换数据串长度,则将所取出比特位对应的十进制数作为偏移量;
如果所取出比特位对应的十进制数超过待变换数据串长度,则将所取出的比特位对应的十进制数除以待变换数据串长度得到的余数作为偏移量,或者将所取出的比特位对应的十进制数减去待变换数据 串长度的整数倍作为偏移量;
或者
从待变换数据串的预定位置对应字节中取出4个比特位,并将所取出比特位对应的十进制数作为偏移量;
根据所述偏移量从待变换数据串中获取预定位数的数据包括下面两种方法之一:
按照预定公式对所述偏移量进行计算得到算术右移位数;
将所述待变换数据串按照所述算术右移位数进行算术右移;
从右移后的待变换数据串最低位开始获取预定位数的数据;
或者
从待变换数据串中与所述偏移量对应的位置处获取预定位数的数据。
一种数据变换装置,包括:
第一获取单元,用于从待变换数据串的预定位置获取偏移量;
第二获取单元,用于根据所述偏移量从待变换数据串中获取预定位数的数据;
变换单元,用于将所获取的数据变换为十进制数据;
判断单元,用于判断所述十进制数据的长度是否小于第一预定长度;
输出单元,用于在所述十进制数据的长度不小于第一预定长度时,从所述十进制数据的低位开始连续取第一预定长度的数据作为变换后的数据;在所述十进制数据的长度小于第一预定长度时,将所述十进制数据的高位补零至第一预定长度,并将高位补零后的数据作为变换后的数据;
所述预定位置包括所述待变换数据串的第一个字节、中间任意一 个字节、或最后一个字节;
所述第一获取单元包括:
第一获取模块,用于从待变换数据串的预定位置对应字节中取出4个比特位或8个比特位;
判断模块,用于判断所取出比特位对应的十进制数是否超过待变换数据串长度;
输出模块,用于在所取出比特位对应的十进制数不超过待变换数据串长度时,将所取出比特位对应的十进制数作为偏移量;在所取出比特位对应的十进制数超过待变换数据串长度时,将所取出比特位对应的十进制数除以待变换数据串长度得到的余数作为偏移量,或者将所取出比特位对应的十进制数减去待变换数据串长度的整数倍作为偏移量;
或者
所述第一获取单元用于从待变换数据串的预定位置对应字节中取出4个比特位,并将所取出比特位对应的十进制数作为偏移量;
所述第二获取单元包括:
计算模块,用于按照预定公式对所述偏移量进行计算得到算术右移位数;
右移模块,用于将所述待变换数据串按照所述算术右移位数进行算术右移;
第二获取模块,用于从右移后的待变换数据串最低位开始获取预定位数的数据;
或者
所述第二获取单元用于从待变换数据串中与所述偏移量对应的位置处获取预定位数的数据。
本发明提供的数据变换方法及装置,从待变换数据串中取出连续的预定个数的比特位;然后通过所取出的比特位可以计算出偏移量,并根据所述偏移量从待变换数据串中获取预定位数的数据;再对取出的字符进行变换得到十进制数据,并且最后只输出一个第一预定长度的数据作为变换后的数据。本发明在变换后的十进制数据长度足够时,可以只取其中第一预定长度的数据;当十进制数据长度不够时,则将十进制数据补零到第一预定长度;从而实现了最后得到的结果长度是统一的。
由于在本发明实现过程中只需要执行取出比特位、计算偏移量、取出连续字符、格式变换、输出预定长度的数据等简单操作,省去了消息摘要等复杂的计算过程,使得该数据变换方法相对于现有技术的方案更为简单,容易实现;而且该方案中需要的操作通用性较强,使得该方案能够普遍运用到很多需要数据变换的过程中。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中数据变换方法流程图;
图2为本发明实施例中数据变换装置框图;
图3为本发明实施例1中数据变换方法的流程图;
图4为本发明实施例2中数据变换方法的流程图;
图5为本发明实施例3中数据变换装置的框图。
具体实施方式
本发明实施例提供一种数据变换方法,如图1所示,该方法包括:
101、在得到随机数等各种待变换数据串后,从待变换数据串中的预定位置取出连续预定个数的比特位作为偏移量,例如:取出待变换数据串中最后一个字节的后四个比特位,或取出待变换数据串中第一个字节的八个比特位等;
本过程中的待变换数据串可以是:用户直接输入的随机数据,也可以是经过无碰撞的单向算法变换后得来的数据;
102、在获得偏移量后,可以根据所述偏移量从待变换数据串中获取预定位数的数据,本发明实施例中的预定位数可以随着待变换数据串的长度不同进行相应调整;
103、将所获取的预定位数的数据变换为十进制数据,具体变换方法可以采用现有的运算方法,如二进制换成十进制的方法、十六进制换成十进制的方法;
104、判断所述十进制数据的长度是否小于第一预定长度,如果所述十进制数据的长度不小于第一预定长度,则执行105过程;如果所述十进制数据的长度小于第一预定长度,则执行106过程;
105、从所述十进制数据的低位开始连续取第一预定长度的数据作为变换后的数据;
106、将所述十进制数据的高位补零至第一预定长度,并将高位补零后的数据作为变换后的数据。
本发明实施例还提供一种数据变换装置,如图2所示,该装置包括:第一获取单元21、第二获取单元22、变换单元23、判断单元24和输出单元25。
在得到随机数等各种待变换数据串后,所述第一获取单元21用于从待变换数据串的预定位置获取偏移量,待变换数据串可以是:用户直接输入的随机数据,也可以是经过无碰撞的单向算法变换后的数据;第二获取单元22用于根据所述偏移量从待变换数据串中获取预定位数的数据;变换单元23用于将所获取的数据变换为十进制数据;判断单元24用于判断所述十进制数据的长度是否小于第一预定长度;输出单元25用于在所述十进制数据的长度不小于第一预定长度时,从所述十进制数据的低位开始连续取第一预定长度的数据作为变换后的数据;在所述十进制数据的长度小于第一预定长度时,将所述十进制数据的高位补零至第一预定长度,并将高位补零后的数据作为变换后的数据。
本发明实施例提供的数据变换方法及装置,从待变换数据串中取出连续的预定个数的比特位;然后通过所取出的比特位可以计算出偏移量,并根据所述偏移量从待变换数据串中获取预定位数的数据;再对取出的字符进行变换得到十进制数据,并且最后只输出一个第一预定长度的数据作为变换后的数据。本发明实施例在变换后的十进制数据长度足够时,可以只取其中第一预定长度的数据;当十进制数据长度不够时,则将十进制数据补零到第一预定长度;从而实现了最后得到的结果长度是统一的。
由于在本发明实现过程中只需要执行取出比特位、计算偏移量、取出连续字符、格式变换、输出预定长度的数据等简单操作,省去了消息摘要等复杂的计算过程,使得该数据变换方法相对于现有技术的方案更为简单,容易实现; 而且该方案中需要的操作通用性较强,使得该方案能够普遍运用到很多需要数据变换的过程中。
为了进一步详细说明本发明实施例的应用情况,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1:
如图3,本发明实施例提供了一种数据转换的方法,以十六进制的待变换数据串“0x3A4362FE8094C8A11D7F5BE38410E8F16758DA23FF3B3E85D7”变换为4位的十进制数为例进行说明,即:第一预定长度为4,本实施例中数据转换的方法具体过程如下:
301、在得到上述十六进制的待变换数据串后,从待变换数据串中的预定位置取出连续预定个数的比特位作为偏移量;
其中,所述预定位置可以是待变换数据串中的第一个字节、最后一个字节、或者中间任意一个字节。一般情况下,在待变换数据串的长度是已知的的情况下,所述预定位置还可以取待变换数据串中的中间任意一个位置,例如取待变换数据串的中间位置、三分之一长度处,或者某个具体的位置如第二、第三个字节,等等。优选的,本实例中去取待变换数据串的首字节作为偏移量,即:本实例中获取的偏移量为“0x3A”;
当然,在某些情况下,例如:待变换数据串长度是已知的且长度比较短,那么为了增加数据变换的随机性,本发明实施例在301之前还可以将较短的待变换数据串进行预处理,所述预处理为将待变换数据串经过无碰撞的单向算法处理,本实施例中的无碰撞的单向算法为哈希算法或消息验证代码算法(HMAC),例如:SHA-1等哈希算法。
302、为了保证能够从待变换数据串中取出预定位数的数据,需要确保所获取的偏移量不会越界,故而本过程判断偏移量是否超过待变换数据串的长度,如果偏移量超过待变换数据串的长度,表示偏移量越界,则执行303;如果偏移 量不超过待变换数据串的长度,表示偏移量没有越界,则执行304;
本步骤中,判断偏移量是否超过数据串的长度的具体方法可以是:将获取的偏移量转换为十进制数据,该十进制数据与待变换数据串长度比较大小,如果该十进制数据大于待变换数据串长度,则认为偏移量越界;
在本实施例中本实例中,获取的偏移量“0x3A”对应的十进制数据为58,而待变换数据串长度为25,上述十进制数据大于待变换数据串长度,所以上述偏移量越界,需要执行303;
303、将偏移量变换为不超过数据串长度的值;本实施例中的具体方法为:将十进制数据除以待变换数据串长度得到的余数作为偏移量;设数据串的长度是N,偏移量是n,对应具体的实现代码如下:
While(n>N)
n=N-n;
该代码表达的意义为:只要偏移量超过数据串长度,就将偏移量减去数据串长度直到偏移量不超过数据串长度;
本发明实施例302中得到的十进制数据为58,按照本过程的计算方法,最后得到的偏移量为0x08;
本发明实施例中将偏移量进行相应的运算后作为新的偏移量,在实际运用时可以直接将从待变换数据串中取出的比特位作为偏移量,并且所取比特位可以为8个比特位、4个比特位或者其他个数的比特位;
304、在获取了上述偏移量后,从待变换数据串的偏移量对应的位置获取预定位数的数据;其中,所述预定位数可以根据待变换数据串的长度来确定,在本实施例中以预定位数为15比特位为例进行说明,通过该15比特位来匹配int型数的长度;从上述得到的偏移量为0x08的情况可以得到预定位数的数据具体为“0x1D7F”;
305、将获取的预定位数的数据变换为十进制形式,上述数据“0x1D7F”变换为十进制的结果为:7551;
306、判断所述十进制数据的长度是否小于第一预定长度,如果所述十进制数据的长度不小于第一预定长度,则执行307过程;如果所述十进制数据的长 度小于第一预定长度,则执行308过程;
本实施例中第一预定长度为4,等于305中计算出的十进制数7551的长度,所以本实施例中可以执行307过程;
307、从所述十进制数据的低位开始连续取第一预定长度的数据作为变换后的数据,即:并取其中的低四位作为变换后的数据;有上面描述可知本实施例中最后变换后的数据是:7551;设X为获取的预定位数的数据,buff是用于存放转换结果的缓冲区,以下代码可完成转换:
Sprint(buff,“%05d”,X);
该代码中最后Buff的低四位就是最终的转换结果;
308、将所述十进制数据的高位补零至第一预定长度,并将高位补零后的数据作为变换后的数据;本过程就是在获取的预定位数的数据转换为十进制后不足四位的话,则高位补零,使其补足四位;在补足四位数据后将补零后的数据作为变换后的数据。
本发明实施例提供的数据变换方法及装置,从待变换数据串中取出连续的预定个数的比特位;然后通过所取出的比特位可以计算出偏移量,并根据所述偏移量从待变换数据串中获取预定位数的数据;再对取出的字符进行变换得到十进制数据,并且最后只输出一个第一预定长度的数据作为变换后的数据。本发明实施例在变换后的十进制数据长度足够时,可以只取其中第一预定长度的数据;当十进制数据长度不够时,则将十进制数据补零到第一预定长度;从而实现了最后得到的结果长度是统一的。
由于在本发明实现过程中只需要执行取出比特位、计算偏移量、取出连续字符、格式变换、输出预定长度的数据等简单操作,省去了消息摘要等复杂的计算过程,使得该数据变换方法相对于现有技术的方案更为简单,容易实现;而且该方案中需要的操作通用性较强,使得该方案能够普遍运用到很多需要数据变换的过程中。
实施例2:
本实施例提供了一种数据变换方法,在本实施例中将待变换数据串看作指定字节的大数,并按照BIG-ENDIAN(低地址存放最高有效字节)形式进行存储。 本实施例中需要将待变换数据串变换为6位数字字符,其中,待变换数据串的十六进制为:“0x5A83152391B06745E0901AA4AF315CC32056516B”,该待变换数据串中包括20字节。
如果需要将待变换数据串的长度固定为20字节,但是原始提供的待变换数据串不是20字节,本发明实施例可以对其进行预处理,如:补位、截短等,最后得到20字节的数据。所述预处理为将待变换数据串经过无碰撞的单向算法处理,本实施例中的无碰撞的单向算法为哈希算法或消息验证代码算法(HMAC),例如:SHA-1等哈希算法。
如图4所示,本发明实施例对应的数据变换方法包括如下过程:
401、从待变换数据串中的预定位置取出连续预定个数的比特位作为偏移量,本实施例中为取待转换数据串的最低有效四位(以二进制计算)作为偏移量,具体为“0x0B”;
本实施例中采用了较为简单的方式获取偏移量,在实际运用时也可以采用实施例1中提供的方式获取偏移量,此处不再赘述;
402、按照预定公式对所述偏移量进行计算得到算术右移位数,其中预定公式可以采用但不限于如下公式:BITS=128-LBS4*8;其中,BITS表示算术右移位数,LSB4表示偏移量。在本实施例提供的预定公式下计算出的算术右移位数为:120-11*8=40;这里的算术右移位数是指按照比特位向右移动的位数;
403、将所述待变换数据串按照所述算术右移位数进行算术右移,得到右移之后的待变换数据串,本实施例中本实例中,将待变换数据串右移40位后得到的数据串为“0x00000000005A83152391B06745E0901AA4AF315C”;
404、从右移后的待变换数据串最低位开始获取预定位数的数据,假如本实施例中预定位数是指31个比特位,那么本实施例从上述右移之后的待变换数据串中最低位依次取出的数据为:0x24AF315C;
本步骤的具体实现方法可以采用但不限于如下方法:设算术右移后的数据串为RESULT1,最低有效31位数据是RESULT2,以下代码给出具体的获取方法:
RESULT2=RESULT1&0x7FFFFFFF;
405、将获取的预定位数的数据变换为十进制形式,上述数据“0x24AF315C”变换为十进制的结果为:615461212;
406、判断所述十进制数据的长度是否小于第一预定长度,如果所述十进制数据的长度不小于第一预定长度,则执行407过程;如果所述十进制数据的长度小于第一预定长度,则执行408过程;
本实施例中第一预定长度为6,小于405中计算出的十进制数615461212的长度,所以本实施例中可以执行407过程;
407、从所述十进制数据的低位开始连续取第一预定长度的数据作为变换后的数据,即:取其中的低6位作为变换后的数据;由上面描述可知本实施例中最后变换后的数据是:461212;设X为获取的预定位数的数据,buff是用于存放转换结果的缓冲区,以下代码可完成转换:
Sprint(buff,“%05d”,X);
该代码中最后Buff的低四位就是最终的转换结果;
408、将所述十进制数据的高位补零至第一预定长度,并将高位补零后的数据作为变换后的数据;本过程就是在获取的预定位数的数据转换为十进制后不足六位的话,则高位补零,使其补足六位;在补足六位数据后将补零后的数据作为变换后的数据。
本实施例可以通过软件产品加硬件的方式实现,通过硬件执行软件产品的指令完成上述数据变换的方法,本实施例提供的软件产品包括但不限于如下实现方案:
//取最后字节的后四位作为索引
//计算该索引开始的连续四个字节的31位值
//将该值按照设定的数字位数生成数字串
idx=data[dig_len-1]&0x0f;//取数据值最后字节的后四位作为索引
//防止计算的索引越界
if(idx+3>=dig_len)
{
idx=dig_len-4;
}
//计算该索引开始的连续四个字节的31位值
otp=((data[idx]&0x7f)<<24)+
(data[idx+1]<<16)+
(data[idx+2]<<8)+
data[idx+3];
if(digit>=(sizeof(digit_power)/sizeof(digit_power[0])))
{
digit=0;
}
otp=otp%digit_power[digit];//将该值按照设定的数字位数生成OTP
本发明实施例提供的数据变换方法及装置,从待变换数据串中取出连续的预定个数的比特位;然后通过所取出的比特位可以计算出偏移量,并根据所述偏移量从待变换数据串中获取预定位数的数据;再对取出的字符进行变换得到十进制数据,并且最后只输出一个第一预定长度的数据作为变换后的数据。本发明实施例在变换后的十进制数据长度足够时,可以只取其中第一预定长度的数据;当十进制数据长度不够时,则将十进制数据补零到第一预定长度;从而实现了最后得到的结果长度是统一的。
由于本实施例通过将待变换数据串右移、并从右移后的数据的低位取数据,能够简化获取预定位数数据的过程,提高数据获取的效率和准确度。
又由于在本发明实现过程中只需要执行取出比特位、计算偏移量、取出连续字符、格式变换、输出预定长度的数据等简单操作,省去了消息摘要等复杂的计算过程,使得该数据变换方法相对于现有技术的方案更为简单,容易实现;而且该方案中需要的操作通用性较强,使得该方案能够普遍运用到很多需要数据变换的过程中。
实施例3:
本发明实施例还提供一种数据变换装置,如图5所示,该装置包括:第一获取单元51、第二获取单元52、变换单元53、判断单元54和输出单元55。
在得到随机数等各种待变换数据串后,所述第一获取单元51用于从待变换数据串的预定位置获取偏移量,待变换数据串可以是:用户直接输入的随机数据,也可以是经过无碰撞的单向算法变换后的数据;第二获取单元52用于根据所述偏移量从待变换数据串中获取预定位数的数据;变换单元53用于将所获取的数据变换为十进制数据;判断单元54用于判断所述十进制数据的长度是否小于第一预定长度;输出单元55用于在所述十进制数据的长度不小于第一预定长度时,从所述十进制数据的低位开始连续取第一预定长度的数据作为变换后的数据;在所述十进制数据的长度小于第一预定长度时,将所述十进制数据的高位补零至第一预定长度,并将高位补零后的数据作为变换后的数据。
一般来讲上述第一获取单元51在获取偏移量时,可以从待变换数据串的第一个字节、中间任意一字节、或最后一个字节中获取;具体而言,所述第一获取单元51包括:第一获取模块511、判断模块512、输出模块513。
第一获取模块511用于从待变换数据串的预定位置对应字节中取出4个比特位或8个比特位;判断模块512用于判断所取出比特位对应的十进制数是否超过待变换数据串长度;输出模块513用于在所取出比特位对应的十进制数不超过待变换数据串长度时,将所取出比特位对应的十进制数作为偏移量;在所取出比特位对应的十进制数超过待变换数据串长度时,将所取出比特位对应的十进制数除以待变换数据串长度得到的余数作为偏移量,或者将所取出比特位对应的十进制数减去待变换数据串长度的整数倍作为偏移量。
当然,如果所述第一获取单元51直接从待变换数据串的预定位置对应字节中取出4个比特位,由于4个比特位对应十进制数最大为15,在待变换数据串长度够长的情况下,可以将所取出比特位对应的十进制数直接作为偏移量,也不会导致偏移量越界。
本发明实施例中第二获取单元52的具体实现方式包括但不限于如下方案:
第一、所述第二获取单元52用于从待变换数据串中与所述偏移量对应的位 置处获取预定位数的数据。
第二、所述第二获取单元52包括:计算模块521、右移模块522、第二获取模块223。
其中,计算模块521用于按照预定公式对所述偏移量进行计算得到算术右移位数,预定公式可以采用但不限于实施例2中提供的公式:BITS=128-LBS4*8;其中,BITS表示算术右移位数,LBS4表示偏移量;右移模块522用于将所述待变换数据串按照所述算术右移位数进行算术右移;第二获取模块523用于从右移后的待变换数据串最低位开始获取预定位数的数据。
本发明实施例主要用在各种需要进行数据变换的设备和方法中,例如:动态口令的生成过程和设备。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (6)
1.一种数据变换方法,其特征在于,包括:
从待变换数据串的预定位置获取偏移量;
根据所述偏移量从待变换数据串中获取预定位数的数据;
将所获取的数据变换为十进制数据;
判断所述十进制数据的长度是否小于第一预定长度;
如果所述十进制数据的长度不小于第一预定长度,则从所述十进制数据的低位开始连续取第一预定长度的数据作为变换后的数据;
如果所述十进制数据的长度小于第一预定长度,则将所述十进制数据的高位补零至第一预定长度,并将高位补零后的数据作为变换后的数据;
所述预定位置包括所述待变换数据串的第一个字节、中间任意一个字节、或最后一个字节;
所述从待变换数据串的预定位置获取偏移量包括下列两种方法之一:
从待变换数据串的预定位置对应字节中取出4个比特位或8个比特位;
判断所取出比特位对应的十进制数是否超过待变换数据串长度;
如果所取出比特位对应的十进制数不超过待变换数据串长度,则将所取出比特位对应的十进制数作为偏移量;
如果所取出比特位对应的十进制数超过待变换数据串长度,则将所取出的比特位对应的十进制数除以待变换数据串长度得到的余数作为偏移量,或者将所取出的比特位对应的十进制数减去待变换数据串长度的整数倍作为偏移量;
或者
从待变换数据串的预定位置对应字节中取出4个比特位,并将所取出比特位对应的十进制数作为偏移量;
根据所述偏移量从待变换数据串中获取预定位数的数据包括下面两种方法之一:
按照预定公式对所述偏移量进行计算得到算术右移位数;
将所述待变换数据串按照所述算术右移位数进行算术右移;
从右移后的待变换数据串最低位开始获取预定位数的数据;
或者
从待变换数据串中与所述偏移量对应的位置处获取预定位数的数据。
2.根据权利要求1所述的数据变换方法,其特征在于,所述预定公式为:BITS=128-LBS4*8;其中,BITS表示算术右移位数,LBS4表示偏移量。
3.根据权利要求1所述的数据变换方法,其特征在于,所述待变换数据串为经过无碰撞的单向算法处理后的待变换数据串。
4.根据权利要求3所述的数据变换方法,其特征在于,所述无碰撞的单向算法为哈希算法或消息验证代码算法。
5.一种数据变换装置,其特征在于,包括:
第一获取单元,用于从待变换数据串的预定位置获取偏移量;
第二获取单元,用于根据所述偏移量从待变换数据串中获取预定位数的数据;
变换单元,用于将所获取的数据变换为十进制数据;
判断单元,用于判断所述十进制数据的长度是否小于第一预定长度;
输出单元,用于在所述十进制数据的长度不小于第一预定长度时,从所述十进制数据的低位开始连续取第一预定长度的数据作为变换后的数据;在所述十进制数据的长度小于第一预定长度时,将所述十进制数据的高位补零至第一预定长度,并将高位补零后的数据作为变换后的数据;
所述预定位置包括所述待变换数据串的第一个字节、中间任意一个字节、或最后一个字节;
所述第一获取单元包括:
第一获取模块,用于从待变换数据串的预定位置对应字节中取出4个比特位或8个比特位;
判断模块,用于判断所取出比特位对应的十进制数是否超过待变换数据串长度;
输出模块,用于在所取出比特位对应的十进制数不超过待变换数据串长度时,将所取出比特位对应的十进制数作为偏移量;在所取出比特位对应的十进制数超过待变换数据串长度时,将所取出比特位对应的十进制数除以待变换数据串长度得到的余数作为偏移量,或者将所取出比特位对应的十进制数减去待变换数据串长度的整数倍作为偏移量;
或者
所述第一获取单元用于从待变换数据串的预定位置对应字节中取出4个比特位,并将所取出比特位对应的十进制数作为偏移量:
所述第二获取单元包括:
计算模块,用于按照预定公式对所述偏移量进行计算得到算术右移位数;
右移模块,用于将所述待变换数据串按照所述算术右移位数进行算术右移;
第二获取模块,用于从右移后的待变换数据串最低位开始获取预定位数的数据;
或者
所述第二获取单元用于从待变换数据串中与所述偏移量对应的位置处获取预定位数的数据。
6.根据权利要求5所述的数据变换装置,其特征在于,所述预定公式为:BITS=128-LBS4*8;其中,BITS表示算术右移位数,LBS4表示偏移量。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910236912.8A CN101697116B (zh) | 2009-10-27 | 2009-10-27 | 数据变换方法及装置 |
PCT/CN2010/074598 WO2011050624A1 (zh) | 2009-10-27 | 2010-06-28 | 数据变换方法及装置 |
US12/811,468 US8655932B2 (en) | 2009-10-27 | 2010-06-28 | Data converting method and a device therefor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910236912.8A CN101697116B (zh) | 2009-10-27 | 2009-10-27 | 数据变换方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101697116A CN101697116A (zh) | 2010-04-21 |
CN101697116B true CN101697116B (zh) | 2011-11-09 |
Family
ID=42142222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910236912.8A Active CN101697116B (zh) | 2009-10-27 | 2009-10-27 | 数据变换方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8655932B2 (zh) |
CN (1) | CN101697116B (zh) |
WO (1) | WO2011050624A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101697116B (zh) * | 2009-10-27 | 2011-11-09 | 飞天诚信科技股份有限公司 | 数据变换方法及装置 |
CN101950301A (zh) * | 2010-09-26 | 2011-01-19 | 北京飞天诚信科技有限公司 | 数据处理的方法及装置 |
CN102411489B (zh) * | 2011-10-18 | 2014-06-04 | 飞天诚信科技股份有限公司 | 一种嵌入式系统中的数据处理方法及装置 |
CN102594797B (zh) * | 2011-12-30 | 2014-07-30 | 飞天诚信科技股份有限公司 | 一种在嵌入式系统中生成验证码的方法与装置 |
CN105721882B (zh) * | 2016-04-18 | 2021-01-05 | 上海泥娃通信科技有限公司 | 一种分离编解码的方法 |
CN107154067B (zh) * | 2017-03-31 | 2021-02-05 | 北京奇艺世纪科技有限公司 | 一种头像生成方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002328803A (ja) * | 2001-04-27 | 2002-11-15 | Canon Inc | データ変換装置及びデータ変換方法 |
JP2005018310A (ja) * | 2003-06-25 | 2005-01-20 | Nippon Telegr & Teleph Corp <Ntt> | データ変換方法および装置 |
CN101044535A (zh) * | 2005-03-16 | 2007-09-26 | 三菱电机株式会社 | 数据变换装置以及数据变换方法 |
CN101226705A (zh) * | 2008-01-28 | 2008-07-23 | 和舰科技(苏州)有限公司 | 循环扩散偏移转码加密方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4610027A (en) * | 1983-12-30 | 1986-09-02 | International Business Machines Corporation | Method for converting a bit map of an image to a run length or run end representation |
US4658430A (en) * | 1984-12-27 | 1987-04-14 | International Business Machines Corp. | System for rotating binary images |
JPH0682370B2 (ja) * | 1987-05-26 | 1994-10-19 | シャープ株式会社 | 文字処理装置 |
US5126739A (en) * | 1989-01-13 | 1992-06-30 | Stac Electronics | Data compression apparatus and method |
CA2045705A1 (en) * | 1990-06-29 | 1991-12-30 | Richard Lee Sites | In-register data manipulation in reduced instruction set processor |
US6233597B1 (en) * | 1997-07-09 | 2001-05-15 | Matsushita Electric Industrial Co., Ltd. | Computing apparatus for double-precision multiplication |
GB2359967B (en) * | 2000-02-29 | 2004-05-12 | Virata Ltd | Qamd |
WO2008078366A1 (ja) | 2006-12-22 | 2008-07-03 | Fujitsu Limited | データ検証装置、データ検証方法およびデータ検証プログラム |
CN101227286B (zh) * | 2008-01-31 | 2010-04-14 | 北京飞天诚信科技有限公司 | 一种生成消息认证码的方法 |
US8392489B2 (en) * | 2008-02-15 | 2013-03-05 | International Business Machines Corporation | ASCII to binary floating point conversion of decimal real numbers on a vector processor |
CN101247233B (zh) * | 2008-03-24 | 2010-06-02 | 北京飞天诚信科技有限公司 | 一种生成消息摘要的方法 |
CN101697116B (zh) * | 2009-10-27 | 2011-11-09 | 飞天诚信科技股份有限公司 | 数据变换方法及装置 |
-
2009
- 2009-10-27 CN CN200910236912.8A patent/CN101697116B/zh active Active
-
2010
- 2010-06-28 US US12/811,468 patent/US8655932B2/en active Active
- 2010-06-28 WO PCT/CN2010/074598 patent/WO2011050624A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002328803A (ja) * | 2001-04-27 | 2002-11-15 | Canon Inc | データ変換装置及びデータ変換方法 |
JP2005018310A (ja) * | 2003-06-25 | 2005-01-20 | Nippon Telegr & Teleph Corp <Ntt> | データ変換方法および装置 |
CN101044535A (zh) * | 2005-03-16 | 2007-09-26 | 三菱电机株式会社 | 数据变换装置以及数据变换方法 |
CN101226705A (zh) * | 2008-01-28 | 2008-07-23 | 和舰科技(苏州)有限公司 | 循环扩散偏移转码加密方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101697116A (zh) | 2010-04-21 |
US20120089653A1 (en) | 2012-04-12 |
WO2011050624A1 (zh) | 2011-05-05 |
US8655932B2 (en) | 2014-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101697116B (zh) | 数据变换方法及装置 | |
CN107276744B (zh) | 一种文件存储加密方法及系统 | |
US7190791B2 (en) | Method of encryption using multi-key process to create a variable-length key | |
CN108052805B (zh) | 一种数据加解密方法和装置 | |
CN102412971A (zh) | 基于sm2密钥交换协议的密钥协商方法及装置 | |
CN103427997A (zh) | 一种生成数字签名的方法及装置 | |
CN114826587B (zh) | 一种数据加密方法、解密方法及其装置、设备 | |
CN112084534A (zh) | 一种哈希算法的实现方法及装置 | |
CN113098675A (zh) | 基于多项式完全同态的二进制数据加密系统及方法 | |
CN113938270A (zh) | 弹性降低复杂度的数据加密方法和装置 | |
CN107248914B (zh) | 一种iOS设备上新型对称加密系统及加密方法 | |
CN107294705B (zh) | 一种密钥生成和验证的方法、设备及系统 | |
CN111614588B (zh) | 一种信号调制方法、装置、设备及计算机可读存储介质 | |
CN112148661A (zh) | 数据处理方法和电子设备 | |
CN103701591A (zh) | 一种序列密码实现方法和密钥流生成方法及装置 | |
CN102594797B (zh) | 一种在嵌入式系统中生成验证码的方法与装置 | |
CN114553393A (zh) | 一种基于分层移位的汉字加密方法 | |
CN114124359A (zh) | 保留格式加密数据的方法、装置、电子设备及存储介质 | |
CN108964884B (zh) | 移动终端动态口令的生成方法、存储介质、电子设备及系统 | |
CN116243887B (zh) | 软件随机数生成方法及装置 | |
CN104702404B (zh) | 一种基于纠错码与低轮aes的加密方法及系统 | |
CN106330443B (zh) | 一种基于sm3算法的密码模块的防攻击方法及装置 | |
CN115378694B (zh) | 一种登录验证方法及系统 | |
CN114640438B (zh) | 基于信息化资产的全要素信息化管理方法 | |
CN113010859B (zh) | 一种支持自校验的激活码生成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |