【发布时间】:2012-04-05 22:35:18
【问题描述】:
我想开发类似于 jsfiddle 的东西,用户可以在其中输入一些数据,然后“保存”它并获得一个独特的随机 url 来加载该数据。
我不想让保存按顺序进行,因为我不希望任何人获取我的所有条目,因为有些条目可能是私人的。但是在服务器上我想按顺序保存它。
是否有一种函数或技术可以将数字转换为具有 4 个字符的散列,在 (62 * 62 * 62 * 62 === 14776336) 条目之前没有任何冲突?
例如,服务器上的第一个条目将在服务器上命名为1,但用户命名为iUew3,下一个条目将在服务器上命名为2,但用户命名为ueGR...
编辑:我不确定这是否很明显,但这个类似哈希的函数需要是可逆的,因为当用户请求 ueGR 时,服务器需要知道将其服务器文件 2
【问题讨论】:
-
如果我这样做,那么我可能会使用不同的编程语言,因此可以使用 the Crypt::Skip32::Base32Crockford module,它表示 让您拥有可以安全使用的数字数据库记录 ID在 URL 中,不会让用户看到您有多少条记录或让他们在记录之间向前或向后跳转。不过源代码是可用的,因此您可以根据需要将该算法移植到 PHP。
-
为什么需要它是可逆的?只需将生成的哈希与 id 和您的完成一起存储即可。
-
@Yoshi:我没有使用数据库
-
哦,那我猜你得找一个 crypt 函数(就像 Quentin 建议的那样)而不是一个散列函数。
-
哈希函数根据定义是不可逆的。