从SHA哈希生成文件名

时间:2014-03-20 12:48:01

标签: filenames sha

我想使用SHA哈希的输出来生成文件名。有建议的方法吗?我尝试了Base64编码,但对于某些输入导致文件名包含正斜杠。显然,我更喜欢一种方法,其输出永远不会包含文件系统保留的字符。将每个字节转换为两位十六进制数字会起作用,但产生较短输出的东西会更好。

2 个答案:

答案 0 :(得分:1)

您可以使用Base32

它只使用字母和数字字符。

答案 1 :(得分:0)

您可以使用此

    function getfilename(){

   mt_srand((double)microtime()*10000);
   $token=mt_rand(1, mt_getrandmax());
   $uid=uniqid(md5($token),true);   
   if($uid!=false && $uid!='' && $uid !=NULL){ return $filename =sha1($uid);}   
    }

    //create file name
    $filename=getfilename();
    $filename = substr($filename, 0, 10);

以上代码使用当前系统时间生成文件名,并使用mt_rand和MD5,以便每次运行代码时创建唯一的文件名。最终文件名为10个字符,您可以将其调整为您想要的任意数量的字符。