如何将crypt()哈希转换为文件名?

1 php hash

我正在使用crypt(),在特定情况下使用带有12个字符salt的md5哈希.

以下是从php.net,crypt文档修改的字符串crypt()返回的示例.

$1$rasmusle$rISCgZzpwk3UhDidwX/in0
Run Code Online (Sandbox Code Playgroud)

这是盐,它还包括编码类型.

$1$rasmusle$ 
Run Code Online (Sandbox Code Playgroud)

这是编码类型.(在这种情况下为MD5)

$1$ 
Run Code Online (Sandbox Code Playgroud)

最后是哈希值.

rISCgZzpwk3UhDidwX/in0
Run Code Online (Sandbox Code Playgroud)

您不能在文件名中包含正斜杠,因为这将被解释为文件夹.

我应该简单地删除所有正斜杠,还有crypt()使用的字符集的其他问题.

Pee*_*Haa 5

看起来您想要阻止/允许特定用户访问图像.如果是这种情况,我会做以下事情:

  1. 将图像存储在文档根目录之外.这确保不能简单地直接请求图像.
  2. 将图像原始名称存储在数据库中,并将sha1_file()哈希存储在同一记录中.如果您的服务器上没有重复的图像,这会增加好处.虽然图像很小,但可以防止系统混乱.
  3. 当某人请求"私人"图像时,他们将通过PHP文件请求它,该文件将检查用户是否具有访问该文件的权限,如果是,则提供文件(来自数据库).

使用上述方法,您可以最大程度地控制谁可以请求图像,您的用户将会感谢您.

注意:您不能简单地将所有图像存储在同一文件夹中,因为所有文件系统都限制了可以在单个目录中存储的文件数量

提供图像的PHP脚本的简单示例如下所示:

<?php

// always set the header and change it according to the type of the image
header("Content-type: image/jpeg");
echo file_get_contents('/path/to/the/image.jpg');
Run Code Online (Sandbox Code Playgroud)