我正在尝试为站点添加一小部分安全性并对某些ID进行编码.id已经是链表行的连续,因此在db中存储加密效率不高.因此我需要对字符串进行编码和解码.
我从myphpscripts中发现了这个很小的功能,我想知道碰撞的可能性是多少.
我真的不太了解这些事情.我假设我的钥匙越久,碰撞的碰撞就越少.
我最终可能拥有超过1000万个独特的连接ID,并希望确保我不会遇到问题.
function encode($string,$key) {
$key = sha1($key);
$strLen = strlen($string);
$keyLen = strlen($key);
$j=0;
$hash='';
for ($i = 0; $i < $strLen; $i++) {
$ordStr = ord(substr($string,$i,1));
if ($j == $keyLen) { $j = 0; }
$ordKey = ord(substr($key,$j,1));
$j++;
$hash .= strrev(base_convert(dechex($ordStr + $ordKey),16,36));
}
return $hash;
}
Run Code Online (Sandbox Code Playgroud)
我觉得你对这个问题有点困惑.
碰撞问题仅适用于不是 1比1但是"有损"的映射,即将几个不同的输入映射到一个输出(例如散列).
您链接的内容看起来像加密/解密例程(如果它正常工作,我没有检查).根据定义加密意味着存在匹配的解密,因此加密定义的映射不会发生冲突(因为在这种情况下您无法解密).
所以你提出的问题没有意义.
也就是说,我强烈建议你不要使用像加密ID那样的绑带.只需存储服务器端的ID并生成会话密钥以引用它们.
| 归档时间: |
|
| 查看次数: |
889 次 |
| 最近记录: |