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