CN103838753A - 一种兑换码的存储、验证方法和装置 - Google Patents
一种兑换码的存储、验证方法和装置 Download PDFInfo
- Publication number
- CN103838753A CN103838753A CN201210482877.XA CN201210482877A CN103838753A CN 103838753 A CN103838753 A CN 103838753A CN 201210482877 A CN201210482877 A CN 201210482877A CN 103838753 A CN103838753 A CN 103838753A
- Authority
- CN
- China
- Prior art keywords
- random value
- redemption code
- index
- value
- numerical value
- 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
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000012795 verification Methods 0.000 title claims abstract description 26
- 102100037060 Forkhead box protein D3 Human genes 0.000 claims description 25
- 101001029308 Homo sapiens Forkhead box protein D3 Proteins 0.000 claims description 25
- 230000006870 function Effects 0.000 claims description 6
- 230000005055 memory storage Effects 0.000 claims description 6
- 239000000203 mixture Substances 0.000 claims description 3
- 238000005336 cracking Methods 0.000 abstract description 8
- 238000013500 data storage Methods 0.000 abstract 1
- 230000008569 process Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 8
- 238000013507 mapping Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 2
- 101000934888 Homo sapiens Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Proteins 0.000 description 1
- 102100025393 Succinate dehydrogenase cytochrome b560 subunit, mitochondrial Human genes 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000004438 eyesight Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0207—Discounts or incentives, e.g. coupons or rebates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0207—Discounts or incentives, e.g. coupons or rebates
- G06Q30/0225—Avoiding frauds
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/107—License processing; Key processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0207—Discounts or incentives, e.g. coupons or rebates
- G06Q30/0239—Online discounts or incentives
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Entrepreneurship & Innovation (AREA)
- General Business, Economics & Management (AREA)
- Marketing (AREA)
- Economics (AREA)
- Game Theory and Decision Science (AREA)
- Computational Linguistics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Medical Treatment And Welfare Office Work (AREA)
- Storage Device Security (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
Abstract
本发明实施方式提出了一种兑换码的存储、验证方法和装置。方法包括:生成随机值,并按照该随机值的生成顺序确定该随机值的索引;将该随机值以及该随机值的索引排列成数值对,将该数值对映射成字符串对,以形成兑换码;根据该随机值的索引确定该随机值的存储位置,并在所确定的存储位置处保存随机值。本发明实施方式可以节约数据存储空间,还保证兑换码的破解成功率可控。而且,在本发明实施方式中,在兑换环节把字符串对映射成数值对进行验证,还提高了兑换码的验证效率。
Description
技术领域
本发明实施方式涉及信息处理技术领域,更具体地,涉及一种兑换码的存储、验证方法和装置。
背景技术
兑换码(Redeem code),又叫推广码(promo code或promotion code),一般是开发者用来推广实际产品或计算机程序产品的代码,其构成一般包括数字和字符等,例如:YWERE77RMJA9。用户可以使用兑换码获得计算机程序或者其他各种实体产品。在用户兑换完程序或者其他实体产品之后,兑换码一般就失效。
在现有技术中,一般的兑换码生成和存储方式是采用随机算法生成若干个字符串,该随机生成的字符串即作为兑换码完整保存在数据库中。而且,兑换码的验证方式则是通过字符串比较的方式来查找数据库中是否存在该验证码或验证码是否已经兑出。
然而,这种现有技术的缺陷在于:
首先,兑换码生成环节效率低下。即使是随机生成字符串,在兑换码量非常巨大的情况下也可能重复,所以这种方式产生的兑换码需要有去除重复生成的兑换码的步骤,或者生成后马上查找兑换码是否重复,因此应用效率低下。而且,将随机生成的字符串即作为兑换码完整地保存会占用太大的存储空间;如果单纯为了节约存储空间而降低字符串的位数,则无法保证兑换码的破解成功率可控。
而且,现有技术中在验证兑换码时需要从数据库、文件或其他存储方式中用全文对比的方式查到是否存在验证码,因此数据检索量大,验证效率低下。
发明内容
本发明实施方式提出一种兑换码的存储方法,从而在保证兑换码的破解成功率可控的情形下,还可以节约数据存储空间。
本发明实施方式还提出一种兑换码的验证方法,从而提高兑换码的验证效率。
本发明实施方式提出一种兑换码的存储装置,从而在保证兑换码的破解成功率可控的情形下,还可以节约数据存储空间。
本发明实施方式还提出一种兑换码的验证装置,从而提高兑换码的验证效率。
本发明实施方式的具体方案如下:
一种兑换码的存储方法,该方法包括:
生成随机值,并按照该随机值的生成顺序确定该随机值的索引;
将该随机值以及该随机值的索引排列成数值对,将该数值对映射成字符串对,以形成兑换码;
根据该随机值的索引确定该随机值的存储位置,并在所确定的存储位置处保存所述随机值。
一种兑换码的验证方法,该方法包括:
接收兑换码,其中该兑换码的生成方法包括:
生成随机值,并按照该随机值的生成顺序确定该随机值的索引;将该随机值以及该随机值的索引排列成数值对,将该数值对映射成字符串,并且混淆所述字符串对以形成兑换码;
对所述兑换码执行反混淆以获取所述字符串,并将所述字符串反映射为数值对,并按照该数值对中的该随机值的索引确定存储位置;
当判定所述存储位置处储存的该随机值没有被兑换时,进一步判断该数值对中的该随机值与在所述存储位置处储存的该随机值是否一致,如果是,则判定兑换码验证成功。
一种兑换码的存储装置,该装置包括随机数生成单元、兑换码生成单元和兑换码存储单元,其中:
随机数生成单元,用于生成随机值,并按照该随机值的生成顺序确定该随机值的索引;
兑换码生成单元,用于将该随机值以及该随机值的索引排列成数值对,将该数值对映射成字符串对,以形成兑换码;
兑换码存储单元,用于根据该随机值的索引确定该随机值的存储位置,并在所确定的存储位置处保存所述随机值。
一种兑换码的验证装置,包括兑换码接收单元、存储位置确定单元和验证单元,其中:
兑换码接收单元,用于接收兑换码,其中该兑换码的生成方法包括:
生成随机值,并按照该随机值的生成顺序确定该随机值的索引;将该随机值以及该随机值的索引排列成数值对,将该数值对映射成字符串对,并且混淆所述字符串对以形成兑换码;
存储位置确定单元,用于对所述兑换码执行反混淆以获取所述字符串,并将所述字符串对反映射为数值对,并按照该数值对中的该随机值的索引确定存储位置;
验证单元,用于当判定所述存储位置处储存的该随机值没有被兑换时,进一步判断该数值对中的该随机值与在所述存储位置处储存的该随机值是否一致,如果是,则判定兑换码验证成功。
从上述技术方案可以看出,在本发明实施方式中,生成随机值,并按照该随机值的生成顺序确定该随机值的索引;将该随机值以及该随机值的索引排列成数值对,将该数值对映射成字符串对,以形成兑换码;根据该随机值的索引确定该随机值的存储位置,并在所确定的存储位置处保存所述随机值。由此可见,应用本发明实施方式以后,通过把兑换码设置成字符串与数值的映射规则,每个兑换码由一对数值构成,其中一个数值是随机数,另一个数值是与随机数生成顺序相关的索引,在生成兑换码环节把数值对映射成字符串对,而且在保存兑换码时只需要存储随机数,因此在保证兑换码的破解成功率可控的情形下,还可以节约数据存储空间。
而且,在本发明实施方式中,在兑换环节把字符串对映射成数值对进行验证,从而提高兑换码的验证效率。
另外,可以将本发明实施方式可以应用到各种终端中,可以跨平台跨终端使用本发明实施方式,适用范围非常广泛。
附图说明
图1为根据本发明实施方式的兑换码的存储方法流程图;
图2为根据本发明实施方式的兑换码的验证方法流程图;
图3为根据本发明实施方式的兑换码的生成过程示意图;
图4为根据本发明实施方式的兑换码的验证过程示意图;
图5为根据本发明实施方式的兑换码的存储装置结构图;
图6为根据本发明实施方式的兑换码的验证装置结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
在本发明实施方式中,把兑换码设置成字符串与数值的映射规则。每个兑换码由一对数值构成,其中一个数值是随机数,另一个数值是与随机数生成顺序相关的索引。在生成兑换码环节把数值对映射成字符串对,而且在保存兑换码时只需要存储随机数,从而在保证兑换码的破解成功率可控的情形下,还可以节约数据存储空间。
在本发明实施方式中,在兑换环节把字符串对映射成数值对进行验证,从而提高兑换码的验证效率。
图1为根据本发明实施方式的兑换码的存储方法流程图。
如图1所示,该方法包括:
步骤101:生成随机值,并按照该随机值的生成顺序确定该随机值的索引。
在这里,可以利用各种随机数生成算法来生成随机值,而且可以按照该随机值的生成顺序确定该随机值的索引。
随机值的索引是由随机值的生成顺序所确定。优选地,索引是连续递增的正整数。比如,应用随机数生成算法第一次生成了随机值123,应用随机数生成算法第二次生成了随机值478,应用随机数生成算法第三次生成了随机值567,则可以确定该随机值123的索引为1、随机值478的索引为2,随机值567的索引为3。
步骤102:将该随机值以及该随机值的索引排列成数值对,将该数值对映射成字符串对,此时可以利用该字符串对作为兑换码。
优选地,还可以进一步对由数值对映射出的字符串对执行混淆操作,并将执行混淆操作后的字符串对作为兑换码。
在这里,首先将在步骤101中生成的随机值以及该随机值的索引排列成数值对,然后再将该数值对映射成字符串对,并且混淆字符串对以形成兑换码。
本发明实施方式可以通过多种方式来将数值对映射成字符串对。比如,利用数值到字符串函数(num2str)将该数值对中的每个数值转换为对应的24进制的字符串表示,并根据每个数值的字符串表示组成字符串对,而混淆是一种可以用于对移动代码和软件知识产权进行保护的程序变换技术,本发明实施方式可以采用各种现有的混淆算法,或者采用将来可能出现的混淆算法。
具体地,在该数值对转化为字符串对过程中,可以利用24个字符(比如:“0”、“1”、“2”、“3”、“4”、5”、“6”、“7”、“8”、“9”、“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”、“I”、“J”、“K”、“L”、“M”、“N”)映射0-23。
更具体地:
假如在步骤101中第50000个随机值是22078136,那么该数值对就是(50000,22078136),因此可以利用24进制表示,则字符串对为(“3EJ8”,“2ID228”),此时映射出字符串为“3EJ82ID228”。
然后,可以利用各种混淆算法,对该映射出字符串进行混淆。比如,混淆为“3E2ID228J8”以作为等待存储的兑换码。
再比如,假设在步骤101中第90000个随机值是33069592,那么该数值对就是(90000,33069592),因此可以利用24进制表示,则字符串对为(“6C60”,“43G4BG”),此时映射出字符串为“6C6043G4BG”。
然后,可以利用各种混淆算法,对该映射出字符串进行混淆。比如,混淆为“6C43G4BG60”以作为等待存储的兑换码。
再比如,假设在步骤101中第100000个随机值是47892341,那么该数值对就是(100000,47892341),因此可以利用24进制表示,则字符串对为(“75EG”,“608AA5”),此时映射出字符串为“75EG608AA5”。
然后,可以利用各种混淆算法,对该映射出字符串进行混淆。比如,混淆为“75608AA5EG以作为等待存储的兑换码。
优选地,由于在“0”、“1”、“2”、“3”、“4”、5”、“6”、“7”、“8”、“9”、“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”、“I”、“J”、“K”、“L”、“M”、“N”字符中,会有一些视觉类似的字符。因此,优选采用“3”、“4”、“5”、“6”、“7”、“9”、“A”、“C”、“E”、“F”、“G”、“H”、“J”、“K”、“L”、“M”、“N”、“P”、“R”、“S”、“T”、“W”、“X”、“Y”作为24进制转换中的24个字符。
以上虽然以24进制为实例对本发明实施方式进行了详细说明,本领域技术人员可以意识到,本发明实施方式并不局限于24进制,而是适用于任意的进制以及映射算法。
步骤103:根据该随机值的索引确定该随机值的存储位置,并在所确定的存储位置处保存所述随机值。
在这里,可以利用位图(bitmap)、哈希(hash)或数组(array)的方式,根据该随机值的索引确定该随机值在兑换索引表中的存储位置,并在所确定的兑换索引表中的存储位置处保存所述随机值,并且在兑换索引表中保存表明随机数是否已兑换的兑换状态位。
比如:可以用1个比特(bit)表示一个兑换码的兑换状况,这样存储容量为1Mbyte的内存就可以存储800万个兑换码状态。
实际上,当兑换码较多的时候,还可以用多个比特来表示兑换码的兑换状况,本发明实施方式对此并无限定。
比如,第50000个随机值是22078136,则可以在兑换索引表中索引为50000的位置处存储该随机值22078136;第90000个随机值是33069592,则可以在兑换索引表中索引为90000的位置处存储该随机值33069592;第100000个随机值是47892341,则可以在兑换索引表中索引为10000的位置处存储该随机值47892341。
在上述方法中,还可以预先确定兑换码的期望生成数目,并根据兑换码的期望生成数目确定索引的位数;再确定兑换码破解概率门限值,并根据所述兑换码破解概率门限值确定随机值的位数。此时,生成随机值,并按照该随机值的生成顺序确定该随机值的索引为:按照该随机值的位数生成随机值,并且按照该随机值的生成顺序和索引的位数确定该随机值的索引。
比如:以期望生成和验证40亿数目、破解成功概率小于796万分之1的兑换码为例。
由于24^7=4586471424,其值域超过45亿,因此索引值可以占用7个字符。由于24^5=7962624,其值域超过796万,因此随机值可以占用5个字符。因此,兑换码共12个字符(12=7+5),则可以生成45亿个兑换码,而且破解的成功概率小于796万分之1。
如果要进一步降低破解的成功率,可以增加随机值的字符个数。比如:随机值6位的话那么破解成功率就小于1亿9000万分之1,兑换码一共为13个字符。
在上述方法中,通过把索引值和随机值生成的字符串进行混淆,使得普通用户更难从中发现规律,而且索引值和随机值每个字符都可以表示一个24进制的值,因此可以将一个字符表示的含义拆开,其中一部分表示索引值,一部分表示随机值(比如第1-20bit表示随机值,第21-24bit表示索引值)。而且,在验证兑换码的过程中,还可以采用位图(bitmap)、哈希(hash)或数组(array)的方式,将兑换索引表全部放在内存中加快查找的效率。
基于上述详细分析,本发明实施方式还提出了一种兑换码的验证方法。
图2为根据本发明实施方式的兑换码的验证方法流程图。
如图2所示,该方法包括:
步骤201:接收兑换码,其中该兑换码的生成方法包括:生成随机值,并按照该随机值的生成顺序确定该随机值的索引;将该随机值以及该随机值的索引排列成数值对,将该数值对映射成字符串对,并且混淆所述字符串对以形成兑换码。
在这里,所接收的兑换码可以是根据图1所示方法生成的兑换码。
步骤202:对所述兑换码执行反混淆以获取所述字符串对,并将所述字符串对反映射为数值对,并按照该数值对中的该随机值的索引确定存储位置。
首先,针对该兑换码执行与兑换码生成过程中的混淆处理相逆的反混淆,从而得到字符串对,然后再将所述字符串对执行与兑换码生成过程中的映射处理相逆的反映射,从而还原为数值对,该数值对包括随机值以及随机值的索引,再按照该数值对中的该随机值的索引确定存储位置。
步骤203:当判定所述存储位置处储存的该随机值没有被兑换时,进一步判断该数值对中的该随机值与在所述存储位置处储存的该随机值是否一致,如果是,则判定兑换码验证成功。
具体地,可以首先判断所述存储位置处储存的该随机值是否已经兑换,如果是,则判定兑换码验证失败;如果不是,则进一步判断该数值对中的该随机值与在所述存储位置处储存的该随机值是否一致,如果是,则判定兑换码验证成功,如果不是,则判定兑换码验证失败。
在这里,可以通过根据兑换索引表中表明随机数是否已兑换的兑换状态位来判定存储位置处储存的该随机值是否已经兑换。当判断所述存储位置处储存的该随机值已经兑换时,则判定兑换码之前已经兑现过,因此验证失败。
当判断所述存储位置处储存的该随机值没有兑换时,则判定兑换码之前没有兑现过,而且进一步通过查询预先保存的兑换索引表,对比步骤202中获得的随机值是否与兑换索引表中存储位置处储存的随机值是否一致,如果是判定兑换码验证成功,如果不是,则判定兑换码验证失败。
优选地,在该方法中,进一步当判定兑换码验证成功时,更新兑换索引表中该存储位置处随机数的状态为已兑换。
应用本发明实施方式以后,这样不论在兑换码的生成环节还是兑换环节都是非常高效的,可以完全摆脱数据库,全部依赖索引进行生成和查询,而且兑换码破解的成功率是可控的。
图3为根据本发明实施方式的兑换码的生成过程示意图;图4为根据本发明实施方式的兑换码的验证过程示意图。
基于上述分析,以生成40亿个兑换码为例进行说明。可以在兑换码的生成过程中,首先顺序生成40亿个值域为[0,7962624)的随机值。并保留一份索引与随机值的对照关系在兑换索引表中以备后续兑换阶段使用。然后把索引值(input_idx)和随机值(input_random)通过数值到字符串(string)的函数num2str转化为40亿对个字符串形式,再把这40亿对个字符串通过一定的混淆算法(譬如调换次序)组合成40亿个兑换码,并提供给客户进行印刷。
而在验证兑换码的过程中,可以首先把兑换码通过反混淆方式还原为一对字符串,再把这对字符串通过字符串到数值的函数str2num把兑换码转化为数值对,其中索引值是input_idx,随机值是input_random,再根据input_idx到兑换索引表(可以是bitmap也可以是hash,甚至可以是数据库的表)查找是否已经兑换过了,如果没有兑换过,则找到input_idx对应的随机值,与input_random比较,如果相同则兑换码验证成功,并且在兑换索引表更新状态;如果不相同,则返回失败。
可以在运行于各种终端的计算机***中实施上述本发明实施方式。比如,终端可以包括但是不局限于:个人电脑(PC)、功能手机、智能手机、掌上电脑、平板电脑或个人数字助理(PDA),等等。
基于上述详细分析,本发明实施方式还提出了一种兑换码的存储装置。
图5为根据本发明实施方式的兑换码的存储装置结构图。
如图5所示,该装置包括随机数生成单元501、兑换码生成单元502和兑换码存储单元503。其中:
随机数生成单元501,用于生成随机值,并按照该随机值的生成顺序确定该随机值的索引;
兑换码生成单元502,用于将该随机值以及该随机值的索引排列成数值对,将该数值对映射成字符串对,以形成兑换码;
兑换码存储单元503,用于根据该随机值的索引确定该随机值的存储位置,并在所确定的存储位置处保存所述随机值。
在一个实施方式中,该装置进一步包括位数确定单元504,其中:
位数确定单元504,用于确定兑换码的期望生成数目,并根据兑换码的期望生成数目确定索引的位数;确定兑换码破解概率门限值,并根据所述兑换码破解概率门限值确定随机值的位数,
随机数生成单元501,用于按照该随机值的位数生成随机值,并且按照该随机值的生成顺序和索引的位数确定该随机值的索引。
优选地,兑换码存储单元502,用于以位图(bitmap)、哈希(hash)或数组(array)的方式,根据该随机值的索引确定该随机值在兑换索引表中的存储位置,并在所确定的兑换索引表中的存储位置处保存所述随机值,而且在兑换索引表中保存表明随机数是否已兑换的兑换状态位;并进一步用于当判定兑换码验证成功时,更新兑换索引表中该存储位置处随机数的兑换状态位状态为已兑换。
本发明实施方式还提出了一种兑换码的验证装置。图6为根据本发明实施方式的兑换码的验证装置结构图。
如图6所示,该装置包括兑换码接收单元601、存储位置确定单元602和验证单元603,其中:
兑换码接收单元601,用于接收兑换码,其中该兑换码的生成方法包括:
生成随机值,并按照该随机值的生成顺序确定该随机值的索引;将
该随机值以及该随机值的索引排列成数值对,将该数值对映射成字符串对,并且混淆所述字符串对以形成兑换码;
存储位置确定单元602,用于对所述兑换码执行反混淆以获取所述字符串,并将所述字符串反映射为数值对,并按照该数值对中的该随机值的索引确定存储位置;
验证单元603,用于当判定所述存储位置处储存的该随机值没有被兑换时,进一步判断该数值对中的该随机值与在所述存储位置处储存的该随机值是否一致,如果是,则判定兑换码验证成功。
具体地,验证单元603,判断所述存储位置处储存的该随机值是否已经兑换,如果是,则判定兑换码验证失败;如果不是,则进一步判断该数值对中的该随机值与在所述存储位置处储存的该随机值是否一致,如果是,则判定兑换码验证成功,如果不是,则判定兑换码验证失败。
在一个实施方式中,验证单元603,用于根据兑换索引表中表明随机数是否已兑换的兑换状态位来判定存储位置处储存的该随机值是否已经兑换,并当判定兑换码验证成功时,更新兑换索引表中该存储位置处随机数的兑换状态位为已兑换。
可以将图1、图2所示方法流程和图5、图6所示装置结构集成到各种计算机***的硬件实体当中。比如,可以集成到:功能手机、智能手机、掌上电脑、个人电脑(PC)、平板电脑或个人数字助理(PDA),等等设备之中。
实际上,可以通过多种形式来具体实施本发明实施方式所提出的兑换码的存储和/或验证方法。比如,可以遵循一定规范的应用程序接口,将计算机文件运行装置编写为安装到计算机***中的插件程序,也可以将其封装为应用程序以供用户自行下载使用。当编写为插件程序时,可以将其实施为ocx、dll、cab等多种插件形式。也可以通过Flash插件、RealPlayer插件、MMS插件、MIDI五线谱插件、ActiveX插件等具体技术来实施本发明实施方式所提出的兑换码的存储和/或验证装置。
可以通过指令或指令集存储的储存方式将本发明实施方式所提出的兑换码的存储和/或验证方法存储在各种存储介质上。这些存储介质包括但是不局限于:软盘、光盘、DVD、硬盘、闪存、U盘、CF卡、SD卡、MMC卡、SM卡、记忆棒(Memory Stick)、xD卡等。
另外,还可以将本发明实施方式所提出的兑换码的存储和/或验证方法应用到基于闪存(Nand flash)的存储介质中,比如U盘、CF卡、SD卡、SDHC卡、MMC卡、SM卡、记忆棒、xD卡等。
综上所述,在本发明实施方式中,生成随机值,并按照该随机值的生成顺序确定该随机值的索引;将该随机值以及该随机值的索引排列成数值对,将该数值对映射成字符串对,以形成兑换码;根据该随机值的索引确定该随机值的存储位置,并在所确定的存储位置处保存所述随机值。由此可见,应用本发明实施方式以后,通过把兑换码设置成字符串与数值的映射规则,每个兑换码由一对数值构成,其中一个数值是随机数,另一个数值是与随机数生成顺序相关的索引。在生成兑换码环节把数值对映射成字符串,而且在保存兑换码时只需要存储随机数,从而在保证兑换码的破解成功率可控的情形下,还可以节约数据存储空间。
而且,在本发明实施方式中,在兑换环节把字符串映射成数值对进行验证,从而提高兑换码的验证效率。
另外,可以将本发明实施方式可以应用到各种终端中,可以跨平台跨终端使用本发明实施方式,适用范围非常广泛。
另外,可以将本发明实施方式可以应用到各种终端中,可以跨平台跨终端使用本发明实施方式,适用范围非常广泛。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (13)
1.一种兑换码的存储方法,其特征在于,该方法包括:
生成随机值,并按照该随机值的生成顺序确定该随机值的索引;
将该随机值以及该随机值的索引排列成数值对,将该数值对映射成字符串对,以形成兑换码;
根据该随机值的索引确定该随机值的存储位置,并在所确定的存储位置处保存所述随机值。
2.根据权利要求1所述的兑换码的存储方法,其特征在于,该方法进一步包括:
确定兑换码的期望生成数目,并根据兑换码的期望生成数目确定索引的位数;确定兑换码破解概率门限值,并根据所述兑换码破解概率门限值确定随机值的位数,
所述生成随机值,并按照该随机值的生成顺序确定该随机值的索引为:按照该随机值的位数生成随机值,并且按照该随机值的生成顺序和索引的位数确定该随机值的索引。
3.根据权利要求1所述的兑换码的存储方法,其特征在于,所述根据该随机值的索引确定该随机值的存储位置,并保存所述随机值包括:
以位图(bitmap)、哈希(hash)或数组(array)的方式,根据该随机值的索引确定该随机值在兑换索引表中的存储位置,并在所确定的兑换索引表中的存储位置处保存所述随机值,并且在兑换索引表中保存表明随机数是否已兑换的兑换状态位。
4.根据权利要求1所述的兑换码的存储方法,其特征在于,所述将该数值对映射成字符串对为:
利用数值到字符串函数(num2str)将该数值对中的每个数值转换为对应的24进制的字符串表示,并根据每个数值的字符串表示组成字符串对。
5.根据权利要求1所述的兑换码的存储方法,其特征在于,所述将该数值对映射成字符串对,以形成兑换码包括:
将该数值对映射成字符串对;
对所述字符串对执行混淆处理以形成兑换码。
6.一种兑换码的验证方法,其特征在于,该方法包括:
接收兑换码,其中该兑换码的生成方法包括:
生成随机值,并按照该随机值的生成顺序确定该随机值的索引;将该随机值以及该随机值的索引排列成数值对,将该数值对映射成字符串对,并且混淆所述字符串对以形成兑换码;
对所述兑换码执行反混淆以获取所述字符串对,并将所述字符串对反映射为数值对,并按照该数值对中的该随机值的索引确定存储位置;
当判定所述存储位置处储存的该随机值没有被兑换时,进一步判断该数值对中的该随机值与在所述存储位置处储存的该随机值是否一致,如果是,则判定兑换码验证成功。
7.根据权利要求6所述的兑换码的验证方法,其特征在于,
所述将该数值对映射成字符串对为:利用数值到字符串函数(num2str)将该数值对中的每个数值转换为对应的24进制的字符串表示,并根据每个数值的字符串表示组成字符串对;
所述将字符串对反映射为数值对为:利用字符串到数值函数(str2num)将字符串对中的每个24进制的字符串表示转换为对应的数值,并根据每个数值组成数值对。
8.根据权利要求6所述的兑换码的验证方法,其特征在于,所述按照该数值对中的该随机值的索引确定存储位置为:按照该数值对中的该随机值的索引确定兑换索引表中的存储位置;
所述当判定所述存储位置处储存的该随机值没有被兑换包括:根据兑换索引表中表明随机数是否已兑换的兑换状态位来判定存储位置处储存的该随机值是否已经兑换;该方法进一步包括:
当判定兑换码验证成功时,更新兑换索引表中该存储位置处随机数的兑换状态位为已兑换。
9.一种兑换码的存储装置,其特征在于,该装置包括随机数生成单元、兑换码生成单元和兑换码存储单元,其中:
随机数生成单元,用于生成随机值,并按照该随机值的生成顺序确定该随机值的索引;
兑换码生成单元,用于将该随机值以及该随机值的索引排列成数值对,将该数值对映射成字符串对,以形成兑换码;
兑换码存储单元,用于根据该随机值的索引确定该随机值的存储位置,并在所确定的存储位置处保存所述随机值。
10.根据权利要求9所述的兑换码的存储装置,其特征在于,进一步包括位数确定单元,其中:
位数确定单元,用于确定兑换码的期望生成数目,并根据兑换码的期望生成数目确定索引的位数;确定兑换码破解概率门限值,并根据所述兑换码破解概率门限值确定随机值的位数,
随机数生成单元,用于按照该随机值的位数生成随机值,并且按照该随机值的生成顺序和索引的位数确定该随机值的索引。
11.根据权利要求9所述的兑换码的存储装置,其特征在于,
兑换码存储单元,用于以位图(bitmap)、哈希(hash)或数组(array)的方式,根据该随机值的索引确定该随机值在兑换索引表中的存储位置,并在所确定的兑换索引表中的存储位置处保存所述随机值,而且在兑换索引表中保存表明随机数是否已兑换的兑换状态位;并进一步用于当判定兑换码验证成功时,更新兑换索引表中该存储位置处随机数的兑换状态位状态为已兑换。
12.一种兑换码的验证装置,其特征在于,包括兑换码接收单元、存储位置确定单元和验证单元,其中:
兑换码接收单元,用于接收兑换码,其中该兑换码的生成方法包括:
生成随机值,并按照该随机值的生成顺序确定该随机值的索引;将该随机值以及该随机值的索引排列成数值对,将该数值对映射成字符串对,并且混淆所述字符串对以形成兑换码;
存储位置确定单元,用于对所述兑换码执行反混淆以获取所述字符串对,并将所述字符串对反映射为数值对,并按照该数值对中的该随机值的索引确定存储位置;
验证单元,用于当判定所述存储位置处储存的该随机值没有被兑换时,进一步判断该数值对中的该随机值与在所述存储位置处储存的该随机值是否一致,如果是,则判定兑换码验证成功。
13.根据权利要求12所述的兑换码的验证装置,其特征在于,
验证单元,用于根据兑换索引表中表明随机数是否已兑换的兑换状态位来判断存储位置处储存的该随机值是否已经兑换,并当判定兑换码验证成功时,进一步用于更新兑换索引表中该存储位置处随机数的兑换状态位为已兑换。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210482877.XA CN103838753B (zh) | 2012-11-23 | 2012-11-23 | 一种兑换码的存储、验证方法和装置 |
US14/646,953 US9619657B2 (en) | 2012-11-23 | 2013-10-09 | Method and apparatus for storing redeem code, and method and apparatus for verifying redeem code |
PCT/CN2013/084865 WO2014079282A1 (zh) | 2012-11-23 | 2013-10-09 | 存储和验证兑换码的方法和装置 |
US15/453,280 US10176304B2 (en) | 2012-11-23 | 2017-03-08 | Method and apparatus for storing redeem code, and method and apparatus for verifying redeem code |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210482877.XA CN103838753B (zh) | 2012-11-23 | 2012-11-23 | 一种兑换码的存储、验证方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103838753A true CN103838753A (zh) | 2014-06-04 |
CN103838753B CN103838753B (zh) | 2018-04-27 |
Family
ID=50775497
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210482877.XA Active CN103838753B (zh) | 2012-11-23 | 2012-11-23 | 一种兑换码的存储、验证方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (2) | US9619657B2 (zh) |
CN (1) | CN103838753B (zh) |
WO (1) | WO2014079282A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224414A (zh) * | 2015-09-25 | 2016-01-06 | 北京奇虎科技有限公司 | 用于实现业务任务的码的校验方法及装置 |
CN105468687A (zh) * | 2015-11-17 | 2016-04-06 | 立德高科(北京)数码科技有限责任公司 | 一种码值数据随机关联方法与关联*** |
CN110232601A (zh) * | 2019-06-18 | 2019-09-13 | 深圳前海微众银行股份有限公司 | 卡券管理方法、装置、设备及存储介质 |
CN110738507A (zh) * | 2018-07-18 | 2020-01-31 | 北京京东金融科技控股有限公司 | 一种兑换码的领取方法和装置 |
CN111723360A (zh) * | 2019-03-18 | 2020-09-29 | 北京京东尚科信息技术有限公司 | 凭证码处理方法、装置及存储介质 |
CN111967908A (zh) * | 2020-08-17 | 2020-11-20 | 深圳市欢太科技有限公司 | 兑换码的验证方法、电子设备及存储介质 |
CN112953716A (zh) * | 2019-11-26 | 2021-06-11 | 北京沃东天骏信息技术有限公司 | 一种兑换码生成及其验证方法和装置 |
CN113240471A (zh) * | 2021-05-19 | 2021-08-10 | 完美世界(北京)软件科技发展有限公司 | 兑奖码的生成方法、生成装置、电子设备及存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109408032A (zh) * | 2018-11-01 | 2019-03-01 | 郑州云海信息技术有限公司 | 一种bios客制化快速实现方法、装置、终端及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101651546A (zh) * | 2009-09-11 | 2010-02-17 | 福建天晴在线互动科技有限公司 | 一种离线生成动态密码与服务器进行登陆认证和同步的方法 |
US20100269174A1 (en) * | 2009-04-20 | 2010-10-21 | Art Shelest | Systems and methods for generating a dns query to improve resistance against a dns attack |
CN102332030A (zh) * | 2011-10-17 | 2012-01-25 | 中国科学院计算技术研究所 | 用于分布式键-值存储***的数据存储、管理和查询方法及*** |
CN102752115A (zh) * | 2012-07-04 | 2012-10-24 | 北京天龙融和软件有限公司 | 挑战码生成方法及装置、动态口令认证方法及*** |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7206411B2 (en) * | 2003-06-25 | 2007-04-17 | Wegener Communications, Inc. | Rapid decryption of data by key synchronization and indexing |
US8087074B2 (en) | 2004-10-15 | 2011-12-27 | Symantec Corporation | One time password |
CN103370688B (zh) | 2010-07-29 | 2016-11-09 | 尼尔默尔·朱萨尼 | 一种由简单用户密码生成多因素个性化服务器强密钥的***及其方法 |
US8870084B2 (en) * | 2011-09-13 | 2014-10-28 | Sca Promotions | Method and system for the generation and validation of personal identification numbers |
US20160132871A1 (en) * | 2012-06-07 | 2016-05-12 | Google Inc. | Secure redemption code generation for gift cards and promotions |
-
2012
- 2012-11-23 CN CN201210482877.XA patent/CN103838753B/zh active Active
-
2013
- 2013-10-09 WO PCT/CN2013/084865 patent/WO2014079282A1/zh active Application Filing
- 2013-10-09 US US14/646,953 patent/US9619657B2/en active Active
-
2017
- 2017-03-08 US US15/453,280 patent/US10176304B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100269174A1 (en) * | 2009-04-20 | 2010-10-21 | Art Shelest | Systems and methods for generating a dns query to improve resistance against a dns attack |
CN101651546A (zh) * | 2009-09-11 | 2010-02-17 | 福建天晴在线互动科技有限公司 | 一种离线生成动态密码与服务器进行登陆认证和同步的方法 |
CN102332030A (zh) * | 2011-10-17 | 2012-01-25 | 中国科学院计算技术研究所 | 用于分布式键-值存储***的数据存储、管理和查询方法及*** |
CN102752115A (zh) * | 2012-07-04 | 2012-10-24 | 北京天龙融和软件有限公司 | 挑战码生成方法及装置、动态口令认证方法及*** |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224414A (zh) * | 2015-09-25 | 2016-01-06 | 北京奇虎科技有限公司 | 用于实现业务任务的码的校验方法及装置 |
CN105224414B (zh) * | 2015-09-25 | 2018-01-19 | 北京奇虎科技有限公司 | 用于实现业务任务的码的校验方法及装置 |
CN105468687A (zh) * | 2015-11-17 | 2016-04-06 | 立德高科(北京)数码科技有限责任公司 | 一种码值数据随机关联方法与关联*** |
CN110738507A (zh) * | 2018-07-18 | 2020-01-31 | 北京京东金融科技控股有限公司 | 一种兑换码的领取方法和装置 |
CN111723360A (zh) * | 2019-03-18 | 2020-09-29 | 北京京东尚科信息技术有限公司 | 凭证码处理方法、装置及存储介质 |
CN111723360B (zh) * | 2019-03-18 | 2023-11-03 | 北京京东尚科信息技术有限公司 | 凭证码处理方法、装置及存储介质 |
CN110232601A (zh) * | 2019-06-18 | 2019-09-13 | 深圳前海微众银行股份有限公司 | 卡券管理方法、装置、设备及存储介质 |
CN112953716A (zh) * | 2019-11-26 | 2021-06-11 | 北京沃东天骏信息技术有限公司 | 一种兑换码生成及其验证方法和装置 |
CN111967908A (zh) * | 2020-08-17 | 2020-11-20 | 深圳市欢太科技有限公司 | 兑换码的验证方法、电子设备及存储介质 |
CN113240471A (zh) * | 2021-05-19 | 2021-08-10 | 完美世界(北京)软件科技发展有限公司 | 兑奖码的生成方法、生成装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103838753B (zh) | 2018-04-27 |
US10176304B2 (en) | 2019-01-08 |
US20150278530A1 (en) | 2015-10-01 |
US20170177838A1 (en) | 2017-06-22 |
WO2014079282A1 (zh) | 2014-05-30 |
US9619657B2 (en) | 2017-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103838753A (zh) | 一种兑换码的存储、验证方法和装置 | |
Fitzgerald et al. | Using NLP techniques for file fragment classification | |
Conti et al. | Automated mapping of large binary objects using primitive fragment type classification | |
JP2021513141A (ja) | 2次元バーコードの生成及び識別 | |
CN102831001B (zh) | 软件升级包的制作方法及装置、程序的升级方法及设备 | |
CN109299177A (zh) | 数据抽取方法、装置、存储介质及电子设备 | |
EP3154202B1 (en) | Encoding program, encoding method, encoding device, decoding program, decoding method, and decoding device | |
CN105844210B (zh) | 硬件有效的指纹识别 | |
EP2863566A1 (en) | Method and apparatus for reconstructing a data block | |
CN103248369A (zh) | 基于fpga的压缩***及其方法 | |
Aronson et al. | Towards an engineering approach to file carver construction | |
CN102842052B (zh) | 一种身份码生成方法 | |
CN103838844A (zh) | 一种键值对数据存储、传输方法及装置 | |
CN110021369A (zh) | 基因测序数据压缩解压方法、***及计算机可读介质 | |
Jensen et al. | PTrie: data structure for compressing and storing sets via prefix sharing | |
US20240220457A1 (en) | Method of compressing and decompressing a file via cellular automata pre-processing | |
CN105814833A (zh) | 安全的数据变换 | |
CN108933599B (zh) | 一种霍夫曼编码实现方法、***、设备及计算机存储介质 | |
CN112632536A (zh) | 基于pe文件改造的内存加载方法 | |
CN111465929B (zh) | 用于内容不可知文件标引的方法及*** | |
CN106598489A (zh) | 一种基于纠删码存储的文件修改算法优化方法 | |
US20220199202A1 (en) | Method and apparatus for compressing fastq data through character frequency-based sequence reordering | |
CN103326731B (zh) | 一种基于分布式算术编码的隐马尔科夫相关信源编码方法 | |
CN102708109B (zh) | 栅格数据的读取方法和装置,栅格数据的写入方法和装置 | |
CN109491620A (zh) | 存储数据重写方法、装置、服务器及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1198301 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1198301 Country of ref document: HK |