生成20位数字的唯一可逆ID

我想从一个代表数字的string中产生一个新的唯一的20位数的string

例如 :

var uid = key.pseudoHash("00000000000000000000"), // "45021-78054-45021-16875" uid = key.pseudoHash("00000000000000000001"), // "15751-40213-97315-65348" .. uid = key.pseudoHash("99999999999999999999"); // "01197-95791-58880-58368" 

我怎样才能有这个伪造的function,使不碰撞,可以颠倒?

多种方法之一是使用一个简单的replace密码 :

 // guaranteed random! var key = [1, 3, 3, 1, 8, 3, 5, 7, 2, 9, 0, 2, 8, 2, 9, 7, 7, 8, 1, 7]; function test(str) { str = str.split(""); for(var i = 0; i < str.length; i++) { str[i] = (Number(str[i]) + key[i]) % 10 } return str.join(""); } console.log(test("00000000000000000000")); // 13318357290282977817 console.log(test("00000000000000000001")); // 13318357290282977818 console.log(test("99999999999999999999")); // 02207246189171866706 

为了更多的随机性,你可以添加更多的混淆和扩散步骤。

这可以很容易地被任何人扭转。 对于安全algorithm,请查看密码学。