Moi*_*nGK 5 java hash uuid sha256
String myText;
UUID.nameUUIDFromBytes((myText).getBytes()).toString();
Run Code Online (Sandbox Code Playgroud)
我使用上面的代码来生成特定文本的代表。例如,“Moien”应始终用“e9cad067-56f3-3ea9-98d2-26e25778c48f”表示,项目重建等任何更改都不应更改该 UUID。
我这样做的原因是我不希望这些特定的文本对人类来说是可读的(可理解的)。
注意:我不需要在散列后重新生成主要文本(例如“Moien”)的能力。
我也有一个替代方法:
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest((matcher.group(1)).getBytes("UTF-8"));
String a = Base64.encode(hash);
Run Code Online (Sandbox Code Playgroud)
您认为哪一个更适合我的问题?
UUID.nameUUIDFromBytes看起来基本上只是 MD5 散列,结果表示为 UUID。
我觉得显式使用 Base64 编码的哈希值更清晰,部分原因是您可以控制使用哪个哈希值 - 如果冲突造成任何类型的安全风险,这可能是相关的。(正是出于这个原因,SHA-256 可能是比 MD5 更好的选择。)当然,SHA-256 的字符串会更长,但希望这不是问题。
请注意,无论哪种情况,我都会使用固定编码通过StandardCharsets. 不要使用平台默认值(根据您的第一个代码段),并且StandardCharsets更喜欢魔术字符串值(根据您的第二个代码段)。
| 归档时间: |
|
| 查看次数: |
4214 次 |
| 最近记录: |