在Java中是否有任何方法可以生成一个字符串的MD5哈希?
当前回答
这个函数给出了与你从mysql的md5函数或php的md5函数等中得到的相同的md5。这是我用的(你可以根据你的需要来改变)
public static String md5( String input ) {
try {
java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
byte[] array = md.digest(input.getBytes( "UTF-8" ));
StringBuffer sb = new StringBuffer();
for (int i = 0; i < array.length; i++) {
sb.append( String.format( "%02x", array[i]));
}
return sb.toString();
} catch ( NoSuchAlgorithmException | UnsupportedEncodingException e) {
return null;
}
}
其他回答
你需要java.security. messagdigest。
调用MessageDigest. getinstance ("MD5")来获取您可以使用的MessageDigest的MD5实例。
计算哈希的方法是:
以字节[]的形式提供整个输入,并使用md.digest(字节)在一次操作中计算哈希。 通过调用md.update(bytes)每次向MessageDigest提供一个字节[]块。当您完成添加输入字节时,计算与的散列 md.digest()。
md.digest()返回的字节[]是MD5散列。
无论如何,我无意中发现了这一点,因为我想从一个将安装COM组件的程序的自然键合成guid;我希望进行综合,以免管理GUID生命周期。我将使用MD5,然后使用UUID类从中获取一个字符串。(http://stackoverflow.com/questions/2190890/how-can-i-generate-guid-for-a-string-values/12867439提出了这个问题)。
在任何情况下,java.util.UUID都可以从MD5字节中获得一个漂亮的String。
return UUID.nameUUIDFromBytes(md5Bytes).toString();
另一个选择是使用Guava哈希方法:
Hasher hasher = Hashing.md5().newHasher();
hasher.putString("my string");
byte[] md5 = hasher.hash().asBytes();
如果你已经在用番石榴,这很方便(如果你没有,你可能应该用)。
这就是我来这里的目的-一个方便的scala函数,返回MD5哈希字符串:
def md5(text: String) : String = java.security.MessageDigest.getInstance("MD5").digest(text.getBytes()).map(0xFF & _).map { "%02x".format(_) }.foldLeft(""){_ + _}
你可以试试凯撒。
第一选择:
byte[] hash =
new Hash(
new ImmutableMessageDigest(
MessageDigest.getInstance("MD5")
),
new PlainText("String to hash...")
).asArray();
第二选择:
byte[] hash =
new ImmutableMessageDigest(
MessageDigest.getInstance("MD5")
).update(
new PlainText("String to hash...")
).digest();
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- 在Jar文件中运行类
- 带参数的可运行?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作
- 在Java流是peek真的只是调试?
- Recyclerview不调用onCreateViewHolder
- 将JSON字符串转换为HashMap