从 Java 中的路径内容创建 MD5 散列
Create a MD5 hash from the contents of a path in Java
我想创建一个程序,它根据路径的输入生成 MD5 哈希。下面的代码仅根据路径名称创建哈希。如何从路径输入生成 MD5 哈希?谢谢!
public static void main (String[]args) {
Scanner sc = new Scanner(System.in);
String path = sc.next();
System.out.println("MD5: "+MD5(path)); //Methode MD5 auf "path" angewandt
}
public static String MD5(String input) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] messageDigest = md.digest(input.getBytes());
BigInteger number = new BigInteger (1, messageDigest);
String hashtext = number.toString(16);
while (hashtext.length()<32) {
hashtext = "0" + hashtext;
}
return hashtext;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
您可以使用以下方式读取文件内容:
String filepath = "" ; // the full path from system.in
byte[] content = Files.readAllBytes(Paths.get(filepath));
之后,你可以得到这个字节数组的散列:
public static byte[] MD5(byte[] data) {
try {
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.update(data);
return messageDigest.digest();
}
catch(Exception e){
// any processing
}
}
为了显示二进制内容(字节数组)或将其作为字符串发送,您可以使用任何 base-16/32/64 编码安全地转换它:
String hashString = Base64.getEncoder().encodeToString(bytesArray);
所以最终代码可能是:
import java.nio.file.*;
import java.util.*;
import java.security.*;
public class Demo {
public static void main (String[]args) throws Exception {
Scanner sc = new Scanner(System.in);
String path = sc.nextLine(); // read all the string from keyboard
byte[] content = Files.readAllBytes(Paths.get(path));
byte[] hash = MD5(content);
String hashString = Base64.getEncoder().encodeToString(hash);
System.out.println("MD5: "+ hashString);
}
public static byte[] MD5(byte[] data) throws Exception{
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.update(data);
return messageDigest.digest();
}
}
我想创建一个程序,它根据路径的输入生成 MD5 哈希。下面的代码仅根据路径名称创建哈希。如何从路径输入生成 MD5 哈希?谢谢!
public static void main (String[]args) {
Scanner sc = new Scanner(System.in);
String path = sc.next();
System.out.println("MD5: "+MD5(path)); //Methode MD5 auf "path" angewandt
}
public static String MD5(String input) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] messageDigest = md.digest(input.getBytes());
BigInteger number = new BigInteger (1, messageDigest);
String hashtext = number.toString(16);
while (hashtext.length()<32) {
hashtext = "0" + hashtext;
}
return hashtext;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
您可以使用以下方式读取文件内容:
String filepath = "" ; // the full path from system.in
byte[] content = Files.readAllBytes(Paths.get(filepath));
之后,你可以得到这个字节数组的散列:
public static byte[] MD5(byte[] data) {
try {
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.update(data);
return messageDigest.digest();
}
catch(Exception e){
// any processing
}
}
为了显示二进制内容(字节数组)或将其作为字符串发送,您可以使用任何 base-16/32/64 编码安全地转换它:
String hashString = Base64.getEncoder().encodeToString(bytesArray);
所以最终代码可能是:
import java.nio.file.*;
import java.util.*;
import java.security.*;
public class Demo {
public static void main (String[]args) throws Exception {
Scanner sc = new Scanner(System.in);
String path = sc.nextLine(); // read all the string from keyboard
byte[] content = Files.readAllBytes(Paths.get(path));
byte[] hash = MD5(content);
String hashString = Base64.getEncoder().encodeToString(hash);
System.out.println("MD5: "+ hashString);
}
public static byte[] MD5(byte[] data) throws Exception{
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.update(data);
return messageDigest.digest();
}
}