我需要使用 SHA-256-'encrypted' 字符串作为文件系统(ext3、fat、ntfs、...)中路径的一部分。
我尝试使用 Base64 对其进行编码,但这并不适用于所有情况,因为 Base64 编码的字符串可能包含“/”、“\”或其他无效字符。
有没有一种(简单的)方法来获取 SHA-256-'加密'-字符串的文件系统安全名称?我不喜欢对所有可能的无效字符使用 String.replaceAll()。
提前感谢您的帮助
尝试类似的东西
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();
}
我不允许写评论......所以我尝试回答。
你真的应该使用 UUID。它不能长于 SHA-hash。如果是这样,恕我直言,您做错了什么。