String myText;
UUID.nameUUIDFromBytes((myText).getBytes()).toString();
我正在使用上述代码为特定文本生成代表符号。
例如,'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);
你认为哪种方式更适合我的问题呢?
MD5
而非SHA-256
,但结果是等效的:它为(实际上)无限的源集提供了一个有限集合中的值,试图使冲突不太可能发生,但并非不可能。换句话说,它并不像您问题标题所问的那样“安全(在独特性方面)”。如果您想要完全排除冲突,散列并不是正确的工具。 - Holger