为了在用户提供的文件的文件系统名称中生成一些唯一性,我生成了一些其他用户提供的数据的哈希值(在这种情况下是用户的 IP 地址和一个随机整数),并在文件名前加上它。我选择了 SHA-1 算法来执行这个哈希。不幸的是,从返回的字符串
md = MessageDigest.getInstance("SHA-1");
// Add values to the digest
String ipAddrHash = new String(md.digest());
...当然包含各种奇怪的外来字符,其中大部分是文件名中不允许的。
所以,要么:
- 如何将哈希值字符串转换为包含可在文件名中使用的“常规字符”的字符串?
- Java 中是否有一个简单的单向函数可供我使用,它会为我立即在文件名中使用生成一个不可逆的值?