Tom*_*Tom 31 java message md5 digest
我理解它是如何工作的但如果我想将MD5打印成String我该怎么做?
public static void getMD5(String fileName) throws Exception{
InputStream input = new FileInputStream(fileName);
byte[] buffer = new byte[1024];
MessageDigest hash = MessageDigest.getInstance("MD5");
int read;
do {
read = input.read(buffer);
if (read > 0) {
hash.update(buffer, 0, read);
}
} while (read != -1);
input.close();
}
Run Code Online (Sandbox Code Playgroud)
aru*_*aku 75
你可以减少写作:
String hex = (new HexBinaryAdapter()).marshal(md5.digest(YOUR_STRING.getBytes()))
Run Code Online (Sandbox Code Playgroud)
sta*_*ker 23
String input = "168";
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] md5sum = md.digest(input.getBytes());
String output = String.format("%032X", new BigInteger(1, md5sum));
Run Code Online (Sandbox Code Playgroud)
要么
DatatypeConverter.printHexBinary( MessageDigest.getInstance("MD5").digest("a".getBytes("UTF-8")))
Run Code Online (Sandbox Code Playgroud)
ash*_*ram 21
试试这个
StringBuffer hexString = new StringBuffer();
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] hash = md.digest();
for (int i = 0; i < hash.length; i++) {
if ((0xff & hash[i]) < 0x10) {
hexString.append("0"
+ Integer.toHexString((0xFF & hash[i])));
} else {
hexString.append(Integer.toHexString(0xFF & hash[i]));
}
}
Run Code Online (Sandbox Code Playgroud)
mmj*_*ers 21
您还可以使用Apache Commons Codec库.这个库包括方法public static String md5Hex(InputStream data)和public static String md5Hex(byte[] data)在DigestUtils类.不需要自己发明;)
首先,您需要获得以下byte[]输出MessageDigest:
byte[] bytes = hash.digest();
Run Code Online (Sandbox Code Playgroud)
你不能轻易打印这个(例如new String(bytes)),因为它将包含不具有良好输出表示的二进制文件.您可以将其转换为十六进制,以便显示如下:
StringBuilder sb = new StringBuilder(2 * bytes.length);
for (byte b : bytes) {
sb.append("0123456789ABCDEF".charAt((b & 0xF0) >> 4));
sb.append("0123456789ABCDEF".charAt((b & 0x0F)));
}
String hex = sb.toString();
Run Code Online (Sandbox Code Playgroud)
小智 6
最短路径:
String toMD5(String input) {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] raw = md.digest(input.getBytes());
return DatatypeConverter.printHexBinary(raw);
}
Run Code Online (Sandbox Code Playgroud)
只记得处理异常。
| 归档时间: |
|
| 查看次数: |
69010 次 |
| 最近记录: |