代码之家  ›  专栏  ›  技术社区  ›  Morteza Milani

如何在PHP中使用一些特殊规则生成哈希字符串?

  •  2
  • Morteza Milani  · 技术社区  · 16 年前

    我正在做一个项目,我需要使用一些散列函数来生成一个散列字符串。此哈希字符串应该是唯一的,由6到13个字符组成(固定长度)。

    我使用一个数据库来存储数据,所以对于每个记录,我都有一个唯一的ID。我想使用这个唯一的ID来生成一个哈希字符串(以实现结果哈希字符串的唯一性)。

    我需要这个哈希字符串只包含有效字符(0-9 a-z a-z)。

    稍后添加:我想生成这个字符串并将其传递给用户,以便用户稍后可以回来编辑条目。任何其他想法都可以接受。

    3 回复  |  直到 16 年前
        1
  •  2
  •   nebkat    16 年前

    使用密码:

    $hash = crypt("somevaluetohash", $uniqueid);
    

    唯一id是一个salt,因此您可以根据id生成不同的值。因此,如果一个用户的密码为“somevaluetohash”,而另一个用户的密码为“somevaluetohash”,则结束hash将不相同。

        2
  •  0
  •   phant0m Grijesh Chauhan    16 年前
    <?php
      $id;
      $hash_full = md5($id); //hash('sha256', $id);
      $hash_cropped = substr($hash_full, 0, 6);
    ?>
    

    使用 hash() 对于其他哈希算法。

    但是你需要这个哈希值做什么呢?对我来说,从ID生成散列没有什么意义,你不能用ID来代替吗?

        3
  •  0
  •   sarnold    16 年前

    它真的需要加密校验和吗?或者更简单的校验和是否合适?数据库提供的主键本身是否不合适?

    crc32 到最高级 sha512 .

    filesystem hashing ,或 finding nearby objects

    推荐文章