Java tutorial
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5 { private static final String TAG = "MD5"; public static boolean checkMD5(String md5, File updateFile) { if (md5 == null || md5.equals("") || updateFile == null) { return false; } String calculatedDigest = calculateMD5(updateFile); if (calculatedDigest == null) { return false; } return calculatedDigest.equalsIgnoreCase(md5); } public static String calculateMD5(File updateFile) { MessageDigest digest; try { digest = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { return null; } InputStream is; try { is = new FileInputStream(updateFile); } catch (FileNotFoundException e) { return null; } byte[] buffer = new byte[8192]; int read; try { while ((read = is.read(buffer)) > 0) { digest.update(buffer, 0, read); } byte[] md5sum = digest.digest(); BigInteger bigInt = new BigInteger(1, md5sum); String output = bigInt.toString(16); // Fill to 32 chars output = String.format("%32s", output).replace(' ', '0'); return output; } catch (IOException e) { throw new RuntimeException("Unable to process file for MD5", e); } finally { try { is.close(); } catch (IOException e) { System.out.println(e); } } } public static String getRecoveryMD5() { String MD5string = ""; String recoveryFilename = "/dev/mtd/mtd1"; try { Process p = Runtime.getRuntime().exec("su"); OutputStream os = p.getOutputStream(); os.write(("md5sum " + recoveryFilename).getBytes()); os.flush(); os.close(); InputStream is = p.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String str = br.readLine(); MD5string = str.split(" ")[0].trim(); is.close(); br.close(); p.destroy(); } catch (Exception e) { System.out.println(e); return null; } System.out.println(MD5string); return MD5string; } }