哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上来说基本上是不可能的。
HASH是根据文件的内容的数据通过逻辑运算得到的数值,获取随机唯一HASH值,先获取随机的唯一字符串,之后进行MD5或sha1算出HASH值。
PHP中uniqid()函数可以直接生成唯一字符串,为了防止被破解加上自己生成的而随机数更加具有唯一性且不易被破解。
分析:
随机的效率与随机性:rand和mt_rand函数的选择,首选mt_rand,效率高,随机性好;
随机次数:选择5次,本来unniqid就是唯一的,加上随机的可以增强安全性。
md5或者sha1:都能生成唯一的hash值,sha1占用资源可能高点,但是微乎其微,如果考虑数据库存储的小写,可以使用32位长度的md5加密。
具体代码实现如下:
<?php function get_hash(){ $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()+-'; $random = $chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)]; $content = uniqid().$random;= return sha1($content); } echo get_hash();