1

我需要使用 SHA-256-'encrypted' 字符串作为文件系统(ext3、fat、ntfs、...)中路径的一部分。

我尝试使用 Base64 对其进行编码,但这并不适用于所有情况,因为 Base64 编码的字符串可能包含“/”、“\”或其他无效字符。

有没有一种(简单的)方法来获取 SHA-256-'加密'-字符串的文件系统安全名称?我不喜欢对所有可能的无效字符使用 String.replaceAll()。

提前感谢您的帮助

4

2 回答 2

1

尝试类似的东西

https://gist.github.com/avilches/750151

import java.security.*;

public static String hash256(String data) throws NoSuchAlgorithmException {
    MessageDigest md = MessageDigest.getInstance("SHA-256");
    md.update(data.getBytes());
    return bytesToHex(md.digest());
}

public static String bytesToHex(byte[] bytes) {
    StringBuffer result = new StringBuffer();
    for (byte byt : bytes) result.append(Integer.toString((byt & 0xff) + 0x100, 16).substring(1));
    return result.toString();
}
于 2013-07-22T13:10:43.960 回答
1

我不允许写评论......所以我尝试回答。

你真的应该使用 UUID。它不能长于 SHA-hash。如果是这样,恕我直言,您做错了什么。

于 2013-08-14T21:01:03.823 回答