[英]MD5 hash in android or java
我需要在MD5哈希中转换字符串。
我在用
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] thedigest = md.digest(bytesOfMessage);
final protected static char[] hexArray = "0123456789ABCDEF".toCharArray();
public static String bytesToHex( byte[] bytes )
{
char[] hexChars = new char[ bytes.length * 2 ];
for( int j = 0; j < bytes.length; j++ )
{
int v = bytes[ j ] & 0xFF;
hexChars[ j * 2 ] = hexArray[ v >>> 4 ];
hexChars[ j * 2 + 1 ] = hexArray[ v & 0x0F ];
}
return new String( hexChars );
}
它正在提供类似此网站的输出http://www.md5.cz/
但我需要生成哈希,因为此http://webcodertools.com/hashstring提供了输出。
请在两个站点中使用测试 。
通过使用上述功能,我得到了像第一个站点一样的o / p,但是我需要第二个站点给出的。
是否有其他功能?我是否在其中缺少某些功能?
谢谢。
第二个网站只是使用base64而不是hex将二进制数据表示为文本。 因此,您可以完全摆脱bytesToHex
方法,而只需使用Base64
:
String base64Digest = Base64.encodeToString(thedigest, Base64.DEFAULT);
(顺便说一句,我会避免使用the
作为变量名的前缀-它提供了没有任何好处,而只是冗余代码。)
使用此方法将以相同格式返回
public static String getMd5Hash(String input) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] messageDigest = md.digest(input.getBytes());
BigInteger number = new BigInteger(1, messageDigest);
String md5 = number.toString(16);
while (md5.length() < 32)
md5 = "0" + md5;
return md5;
} catch (NoSuchAlgorithmException e) {
Log.e("MD5", e.getLocalizedMessage());
return null;
}
}
它以// WHAT的MD5格式返回// // 4a2028eceac5e1f4d252ea13c71ecec6格式,
String base64format = Base64.encodeToString(thedigest, Base64.DEFAULT); //as given by @Jon Skeet
将以SiAo7OrF4fTSUuoTxx7Oxg ==的格式返回
反之亦然,抱歉。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.