【问题标题】:Generate file name from SHA hash从 SHA 哈希生成文件名
【发布时间】:2023-03-17 02:52:01
【问题描述】:

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

【问题讨论】:

    标签: filenames sha


    【解决方案1】:

    你可以使用Base32

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

    【讨论】:

      【解决方案2】:

      你可以用这个

          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 个字符,您可以将其调整为您想要的任何字符数。

      【讨论】:

        猜你喜欢
        • 2011-03-22
        • 2013-09-08
        • 1970-01-01
        • 2012-11-19
        • 2017-09-20
        • 2019-04-28
        • 1970-01-01
        • 1970-01-01
        • 2019-07-24
        相关资源
        最近更新 更多