1
CoX 2013-04-09 21:44:48 +08:00
再搞个字段就行了,订单号可以自己组合,比如日期再加几个随机数字 ex:2013040921460101
|
2
qiuai 2013-04-09 21:48:53 +08:00 1
1=>a,2=>b....
|
3
0x0001 2013-04-09 21:49:09 +08:00
我会使用生成时刻的timestamp进行处理,如截取几位,再加上id号,毕竟订单生成时刻应该是必存的。
|
4
Air_Mu 2013-04-09 21:50:33 +08:00
多搞一个字段做查询
|
5
Js 2013-04-09 21:59:54 +08:00
简单点就是随便弄个数字做异或, 再base32/base62/base64一下算了
|
6
andybest OP |
8
Js 2013-04-09 22:05:41 +08:00 1
@andybest
irb(main):001:0> XOR_NUM = 123321 => 123321 irb(main):002:0> code = (123 ^ XOR_NUM).to_s 32 => "3oe2" irb(main):003:0> (code.to_i 32) ^ XOR_NUM => 123 |
10
qdcanyun 2013-04-10 17:00:26 +08:00
基本思想就是产生一个无序字符串
然后做字典对应让每个无序串真实id |
11
virushuo 2013-04-10 17:04:45 +08:00 1
类似于做短网址的方法,你转换这个数字到一个新的数制,比如62进制(考虑到url字符安全,62进制比较常用),然后创建一个62位长的码表,做映射。这样就转成了一个数字+字母的ID。
反转回来的时候别人不知道你的码表顺序,只拿一个id不太容易反算回去。当然如果非要算也能算出来,收集几个连续id就算出来了。但你这也不是为了加密,被猜出来也无所谓。 参考: http://stackoverflow.com/questions/4728855/please-explain-this-base-62-php-conversion-function-algorithm |
12
Livid MOD import uuid
uuid.uuid1() |
13
cutehalo 2013-04-10 17:05:49 +08:00
可以用一些不常用的进制转换 什么17进制 63进制的...
|
14
Livid MOD 最好是再加个 UUID 字段。
|