问题描述
我正在建立一个通信系统,在该系统中,用户通过其公共密钥(非对称密码学)进行标识。本质上,每个用户ID都是他的公钥。
但是我需要为他们创建一些目录来存储他们的消息。一些目录布局,例如:
/storage/USERNAME/
msg1
msg2
...
但是如何获得USERNAME
?从技术上讲,我不想提示用户输入它,因为它无关紧要。它只需要是一个唯一的有效目录名称。
我正在考虑使用像sha3
这样的哈希算法来简单地哈希其公钥,然后将哈希结果用作其用户标识符。但不确定。是过度杀伤力吗?还有更好的主意吗?
更新:我在接受的答案here中使用了解决方案,并在其注释中使用了建议(即使用sha3_244)。
解决方法
您可以使用base62编码。在这种情况下,它比sha3和无碰撞速度快得多。
对于文件夹中的许多文件,最好将存储拆分为某些子文件夹部分。例如,使用两个字节的哈希值生成子目录。因此,标识为 ab cdef1234的用户将保存在路径/ storage / ab / cdef1234 / **