php转换/将文本更改为唯一字符串固定长度

时间:2015-02-26 06:58:26

标签: php

我有HTTP_USER_AGENT,系统字体列表和其他特征。有相当长的文字。

是否可以将文本转换为唯一字符串?

想法如下:

网站无法登录。

1)访客点击以从网站发送消息。

2)我试图识别访客。获取浏览器指纹(相当长的文本)。将文本转换为唯一字符串。

3)然后检查mysql中是否存在相同的字符串。如果存在,那么我有一些信息(记录在mysql中),如果访问者之前做了好事或坏事。

4)如果在mysql中没有唯一的字符串(从指纹创建),则在mysql中记录并将访问者视为“坏访问者”。完全检查消息。

字符串必须是唯一的,固定长度。并且从相同的指纹总是必须得到相同的字符串(不随机)。

我尝试根据https://stackoverflow.com/a/6382880/2118559

创建内容
$value_ = unpack('H*', "Some long text as example...");
echo $value_[1]. ' $value_[1] __ <br/>';

第一个问题,文字越长,$value_越长可以使其固定长度。

echo base_convert($value_[1], 16, 2). ' base_convert _ <br/>';
echo pack('H*', base_convert(base_convert($value_[1], 16, 2), 2, 16)). ' -- pack base_convert1 <br/>';

得到了意想不到的结果。

可能需要以其他方式做吗?有些函数可以从文本中创建唯一的,而不是随机的字符串吗?

如果http://us3.php.net/manual/en/function.crc32.php怎么办?

尝试

$checksum = crc32("The quick brown fox jumped over the lazy dog. Some long string. ");
echo printf("%u", $checksum). ' checksum -- <br/>';

重新加载浏览器,看到相同的号码。从不同的浏览器尝试,看到相同的数字。尝试了3种不同长度的文本,看到相同的长度编号(12个字符/数字)。

crc32是否根据文字创建唯一编号(唯一文字表示我获得唯一编号)?

似乎它足够独特What is the maximum value for an int32?(超过20亿种变体)...... 但是https://stackoverflow.com/a/5099354/2118559

  

CRC旨在防止传输错误,而不是恶意行为。

     

因此,它不具有抗冲击性。

0 个答案:

没有答案