mor*_*ous 2 php compression encryption encoding
我正在写一个联盟系统,我想从网址生成一个独特的32个字符宽的令牌.
问题是URL最长可达128个字符(IIRC).有没有办法可以从给定的URL创建一个唯一的32字符宽的广告/令牌,没有任何"碰撞"?
我不确定这是编码,加密还是散列问题(可能是这三者的混合).
我将使用PHP实现这个"映射函数",因为这是我用来构建这个特定系统的语言.关于如何做到这一点的任何建议?
甚至可以将128个字符串字符串唯一映射到32个字符串中(即没有冲突?)...
[编辑]
我只是做了一些阅读,发现网址的最大长度实际上是2K左右.但是,我并不担心那种"愚蠢"的边缘情况.我很确定99.9%的时间,我强加的128个字符的限制应该足够了.
甚至可以将128个字符串字符串唯一映射到32个字符串中(即没有冲突?)...
在某种程度上 您可以使用md5或sha1之类的哈希函数.这就是他们要做的事情.
MD5生成一个32字符串,SHA1生成一个40字符串.
当然,你无法保证不会发生碰撞.这是不可能的,因为消息空间对于哈希来说太大了(如果使用MD5,则有2 1024条消息与2 128条可能的哈希),但这些功能意味着抗冲突且难以反转.
http://en.wikipedia.org/wiki/Hash_function
http://en.wikipedia.org/wiki/MD5
http://en.wikipedia.org/wiki/SHA-1
| 归档时间: |
|
| 查看次数: |
860 次 |
| 最近记录: |