System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机技术,具体地涉及一种随机编码生成方法以及随机编码生成装置。
技术介绍
1、目前,在计算机技术中大量场景需要用到系统全局唯一编号来进行唯一标识。例如,用户需要唯一身份标识;商品需要唯一编号;订单需要唯一编号;消费券券码需要唯一编码等,都需要全局唯一标识。其中,有一些编号需要暴露给终端用户的,如订单编号、消费券券码等。对于这些券码的生成只保证全局唯一是不够的,另外还需要保证不能是有序或者有规则的,否则就有安全风险。例如,如果订单号有规则的话,他人可以猜测系统一天的订单量从而猜测平台交易量,券码有规则的话容易被人猜测出来从而被冒领。
2、现有技术中,主流实现随机编号的方法主要有以下几种:
3、(1)使用jdk工具包中的random函数生成随机整数。其缺点是无法确保全局唯一,如果要生成唯一的编号,需要结合数据库使用,每次生成一个新的编号以后检查数据库中是否存在相同的编号。在数据量大时影响系统性能。
4、(2)使用uuid生成随机字符串。其缺点是生成的编号太长,存储时占比较大的存储空间。有一些业务场景希望使用较短的编号,使用uuid就无法满足业务要求。
5、(3)结合时间戳的生成编号方案(如雪花算法等)。其缺点是生成的编号时候有规律增长的,而且编号长度较长。
6、(4)使用数据库自增编号。其缺点是生成的编号是有序增长的,而且每次生成需要访问数据库,影响系统性能。
技术实现思路
1、鉴于上述问题,本专利技术旨在提出
2、本专利技术一方面的随机编码生成方法,其特征在于,包括以下步骤:
3、种子数生成步骤,生成种子数;
4、第一进制转换步骤,将所述种子数转换成二进制数并且将所述二进制数的规定位采用随机数进行填充得到第一随机编码;
5、数据位置置换步骤,将所述第一随机编码采用预先设置的置换表进行位置置换,得到第二随机编码,其中,所述置换表用于将所述第一随机编码中的每个位按照规定的规则重新排列;
6、秘钥运算步骤,将所述第二随机编码与预先设置的秘钥进行规定运算,得到第三随机编码;
7、第二进制转换步骤,将所述第三随机编码转换成规定进制数表示的第四随机编码;以及
8、数据数值替换步骤,将所述第四随机编码采用预先设置的替换表进行数值替换,得到第五随机编码,将所述第五随机编码作为最终生成的随机编码,其中,所述替换表用于将所述第四随机编码的每个位的字符替换成另一字符。
9、可选地,在所述种子数生成步骤之前进一步包括:
10、随机且一次性生成所述置换表;
11、随机且一次性生成所述替换表;以及
12、随机且一次性生成所述秘钥。
13、可选地,在所述秘钥运算步骤中作为所述规定运算采用异或运算。
14、可选地,在所述种子数生成步骤,生成的种子数小于等于3*n-m,其中,n为最终生成的随机编码的位数,m表示随机数占用所述最终生成的随机编码的位数,
15、在所述第一进制转换步骤中,将所述种子数换成用二进制数并且将所述二进制数的长度填充到3*n-m位,若长度不够,则左边补0,并且在最左边m位使用随机数进行填充,
16、在所述第二进制转换步骤中,将所述第三随机编码转换成八进制数,其中,如果得到的八进制数的长度不满n,则在左侧补0,
17、在所述数据数值替换步骤中,将所述第四随机编码从左向右的每个数字+1得到一个数值,使用该数值利用所述替换表替换进行数值替换。
18、可选地,所述置换表为3*n的表格,在3*n的每个单元中分别是1~3*n中的一个数字并且每个单元中的数字不重复。
19、可选地,所述替换表为8*n的表格,其中,每一行的8个单元中分别是0~9中的一个数字且同一行的每个单元中的数字不重复。
20、可选地,在所述种子数生成步骤,生成的种子数小于等于5*n-m,其中,n为最终生成的随机编码的位数,m表示随机数占用所述最终生成的随机编码的位数,
21、在所述第一进制转换步骤中,将所述种子数换成二进制数并且将该二进制数的长度填充5*n-m位,如果长度不够,则左边补0,并且在最左边m位使用随机数进行填充,
22、在所述第二进制转换步骤中,将所述第三随机编码按照每5位为一组进行分组,得到n组,每一组分别转换成十进制数,得到所述第四随机编码,
23、在所述数据数值替换步骤中,将所述第四随机编码从左向右的每个数字+1得到一个数值,使用该数值利用所述替换表进行数值替换。
24、可选地,所述置换表为5*n的表格,在5*n的每个单元中分别是1~5*n中的一个数字并且每个单元中的数字不重复。
25、可选地,所述替换表为32*n的表格,其中,每一行的每个单元分别是0~9的数字以及22个不同的字母中的一个数字或者字母且同一行的每个单元中的数字或者字母不重复。
26、本专利技术一方面的随机编码生成装置,其特征在于,包括:
27、种子数生成模块,用于生成种子数;
28、第一进制转换模块,用于将所述种子数转换成二进制数并且将所述二进制数的规定位采用随机数进行填充得到第一随机编码;
29、数据位置置换模块,用于将所述第一随机编码采用预先设置的置换表进行位置置换,得到第二随机编码,其中,所述置换表用于将所述第一随机编码中的每个位按照规定的规则重新排列;
30、秘钥运算模块,用于将所述第二随机编码与预先设置的秘钥进行规定运算,得到第三随机编码;
31、第二进制转换模块,用于将所述第三随机编码转换成规定进制数表示的第四随机编码;以及
32、数据数值替换模块,用于将所述第四随机编码采用预先设置的替换表进行数值替换,得到第五随机编码,将所述第五随机编码作为最终生成的随机编码,其中,所述替换表用于将所述第四随机编码的每个位的字符替换成另一字符。
33、可选地,在所述种子数生成模块,生成的种子数小于等于3*n-m,其中,n为最终生成的随机编码的位数,m表示随机数占用所述最终生成的随机编码的位数,
34、在所述第一进制转换模块中,将所述种子数换成用二进制数并且将所述二进制数的长度填充到3*n-m位,若长度不够,则左边补0,并且在最左边m位使用随机数进行填充,
35、在所述第二进制转换模块中,将所述第三随机编码转换成八进制数,其中,如果得到的八进制数的长度不满n,则在左侧补0,
36、在所述数据数值替换模块中,将所述第四随机编码从左向右的每个数字+1得到一个数值,使用该数值利用所述替换表替换进行数值替换。
37、可选地,所述置换表为3*n的表格,在3*n的每个单元中分别是1~3*n中的一个数字并且每个单元中的数字不重复。
38、本文档来自技高网...
【技术保护点】
1.一种随机编码生成方法,其特征在于,包括以下步骤:
2.如权利要求1所述的随机编码生成方法,其特征在于,在所述种子数生成步骤之前进一步包括:
3.如权利要求1所述的随机编码生成方法,其特征在于,
4.如权利要求1所述的随机编码生成方法,其特征在于,
5.如权利要求4所述的随机编码生成方法,其特征在于,
6.如权利要求5所述的随机编码生成方法,其特征在于,
7.如权利要求1所述的随机编码生成方法,其特征在于,
8.如权利要求7所述的随机编码生成方法,其特征在于,
9.如权利要求8所述的随机编码生成方法,其特征在于,
10.一种随机编码生成装置,其特征在于,包括:
11.如权利要求10所述的随机编码生成装置,其特征在于,
12.如权利要求11所述的随机编码生成装置,其特征在于,
13.如权利要求12所述的随机编码生成装置,其特征在于,
14.如权利要求10所述的随机编码生成装置,其特征在于,
15.如权利要求14所述
16.如权利要求15所述的随机编码生成装置,其特征在于,
17.一种计算机可读介质,其上存储有计算机程序,其特征在于,
18.一种计算机设备,包括存储模块、处理器以及存储在存储模块上并可在处理器上运行的计算机程序,其特征在于,
...【技术特征摘要】
1.一种随机编码生成方法,其特征在于,包括以下步骤:
2.如权利要求1所述的随机编码生成方法,其特征在于,在所述种子数生成步骤之前进一步包括:
3.如权利要求1所述的随机编码生成方法,其特征在于,
4.如权利要求1所述的随机编码生成方法,其特征在于,
5.如权利要求4所述的随机编码生成方法,其特征在于,
6.如权利要求5所述的随机编码生成方法,其特征在于,
7.如权利要求1所述的随机编码生成方法,其特征在于,
8.如权利要求7所述的随机编码生成方法,其特征在于,
9.如权利要求8所述的随机编码生成方法,其特征在于,
10.一种随机编...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。