用于标识用户文件的唯一字符串

时间:2015-07-16 17:59:08

标签: language-agnostic unique filepath

我们的系统有许多机器协同工作。在某些时候,他们需要创建一个图像并将其上传到媒体服务器。此媒体服务器只是一个提供静态文件的Web服务器。我们不想显示每个图像的增量ID,因此我们需要模糊图像名称。

由于每台计算机都有唯一的用户,我们只跟踪生成的网址,因此我们决定使用HMAC-SHA256(secret, user_id)为每张图片生成文件名。

这会产生具有此类名称的图像:b3dbaea7adef41e8ecbeaa0cd8ec02d57f0334a6e003271d5e334ae2e46b4285.jpg

目前不是最美丽的解决方案,但确实有效。

由于现在某些业务发生变化,我们需要更频繁地生成此图像,我们需要为每个用户创建文件夹。

如何保持唯一文件路径而不会如此大,同时避免图像名称之间或用户文件夹之间的冲突

我想避免这种路径:b3dbaea7adef41e8ecbeaa0cd8ec02d57f0334a6e003271d5e334ae2e46b4285/b3dbaea7adef41e8ecbeaa0cd8ec02d57f0334a6e003271d5e334ae2e46b4285.jpg

1 个答案:

答案 0 :(得分:0)

与SHA256相反,MD5将生成大约一半的字符串;如果你用它同时用于目录&文件名,只要你当前的实现,你就有了路径。

另一个想法:使用的字符空间比文件和目录名称允许的要小得多(16个字符)(36或62,取决于你是否允许这两种情况,并且这是坚持使用字母数字),所以你可以将哈希映射到较小的字符串而不会增加碰撞的可能性。