1
senghoo 2013-11-05 00:38:24 +08:00 via iPad
你是要hash么。。。
|
2
yangqi 2013-11-05 00:41:41 +08:00
你这要用到压缩算法了吧。。。
|
3
FrankFang128 2013-11-05 00:57:07 +08:00
sum + padding , 哦呵呵呵
|
4
msg7086 2013-11-05 04:34:55 +08:00
CRC16(input)
|
5
fangzhzh 2013-11-05 08:36:54 +08:00
|
6
arzusyume 2013-11-05 09:07:26 +08:00
不要反解的话md5取前4位
要反解的话弄个key,然后按位运算 |
7
arzusyume 2013-11-05 09:12:22 +08:00
啊,没仔细看,生成4位数字貌似只能是签名
那就位移XX位然后取前四位吧 |
8
antmanler 2013-11-05 10:24:23 +08:00
One time password http://en.wikipedia.org/wiki/One-time_password
|
9
NFSwind 2013-11-05 13:43:57 +08:00 via iPhone
加密算法都可以的。。
|
10
stackpop 2013-11-05 14:21:35 +08:00
你的这个,如果只映射到4位数字,那么肯定会有很多碰撞。
|
11
10iii 2013-11-05 16:10:26 +08:00
这过程叫hash,从一个无限整数空间[“数字字符串A:“1263864325“”]到有限(10K)以内[4位数字的字符串B]的映射.碰撞是必然而且频繁的,反向当然就是不可能的。
随手捡一个符合楼主要求的 : B = left(A, 4) [我果然是个excel程序员] |
12
Liang 2013-11-05 17:58:57 +08:00
要实现任何字符串生成四位字符串的想法是不可能的,如果这样,那容量限制的问题就可以解决了。
如果是固定长度的字符串,楼主或者可以试试进制转换,比如10进制转64进制,1234567890=19Bwbi。这样也可以逆转了。 再者,一定要任意长度转固定长度的话,只能数据库了。固定长度做key。 |
13
wy315700 2013-11-05 18:06:38 +08:00
把很长的数据生成短数据用HASH
根据短数据生成长数据是pseudo random generator 如rc4 |
14
alsotang 2013-11-05 18:12:17 +08:00
[7] pry(main)> Digest::MD5.hexdigest("1263864325").scan(/\d/).join()[0...4]
=> "5863" |