固定长度随机码发生器

时间:2015-06-18 10:34:31

标签: php random filenames

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

示例:

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

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

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

谢谢!

3 个答案:

答案 0 :(得分:0)

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

echo randomNumber(20);     ?&GT;

使用此代码

答案 1 :(得分:0)

试试这个: -

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

答案 2 :(得分:0)

使用sha1获取唯一的哈希值,然后我们将每个char转换为数字。 注意:这会降低sha1的稳健性,因为我们只使用它的一部分。加上模数并不完全正确,因为它适用于255的范围。

<?php

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