【问题标题】:Fixed length random code generator定长随机码生成器
【发布时间】:2015-06-18 10:34:30
【问题描述】:

我需要为 20 位(数字)的 PDF 文件分配一个随机名称。此代码必须从唯一的个人 ID 生成。

示例:

Person ID                                           File name
----------                                          ------------------------
40352142N ---------> random code generator -------> XXXXXXXXXXXXXXXXXXXX.pdf

如果您也可以根据文件名生成人员 ID,那就太好了。它必须是可逆的,但前提是您知道公式。

在 PHP 或 ASP 中最好的方法是什么。关于如何优雅地实现这一点的任何想法?

谢谢!

【问题讨论】:

  • 使用任何哈希生成器
  • 如果哈希直接来自用户的 ID,我假设您已将用户限制为只能创建一个文件?

标签: php random filenames


【解决方案1】:
<?php
function randomNumber( $len) {
    $rand   = '';
    while( !( isset( $rand[$len-1] ) ) ) {
        $rand   .= mt_rand( );
    }
    return substr( $rand , 0 , $len );
}

回显随机数(20); ?>

使用此代码

【讨论】:

    【解决方案2】:

    试试这个:-

    $_rand = "0123456789abcdefghijklmnopqrstuvwxyz";
    $str = '';
    for( $i = 0; $i < 20; $i++ )
    {
       $str .= substr( $_rand, rand( 0, ( strlen( $_rand ) - 1 ) ), 1 );
    }

    【讨论】:

    • 谢谢,但这是不可逆的,也不是从任何输入种子生成的。
    【解决方案3】:

    使用 sha1 获得唯一的哈希值,然后我们将每个字符转换为数字。 注意:这会降低 sha1 的稳健性,因为我们只使用了其中的一部分。另外,模数不太正确,因为它适用于 255 的范围。

    <?php
    
    $sha = sha1('test', 1);
    $name = '';
    for($i = 0; $i < 20; ++$i) {
        $name .= ord($sha[$i])%10;
    }
    echo $name;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-06
      • 1970-01-01
      • 2012-01-26
      • 2014-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多