Beispiel #1
0
  public static boolean checkMD5(String md5, File updateFile) {
    if (md5 == null || md5.equals("") || updateFile == null) {
      Log.e(TAG, "md5 String NULL or UpdateFile NULL");
      return false;
    }

    String calculatedDigest = calculateMD5(updateFile);

    if (calculatedDigest == null) {
      Log.e(TAG, "calculatedDigest NULL");
      return false;
    }

    Log.i(TAG, "Calculated digest: " + calculatedDigest);
    Log.i(TAG, "Provided digest: " + md5);

    return calculatedDigest.equalsIgnoreCase(md5);
  }
Beispiel #2
0
 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) {
     Log.e(TAG, "Exception on getting Recovery MD5", e);
     return null;
   }
   Log.i(TAG, "Recovery MD5: " + MD5string);
   return MD5string;
 }
Beispiel #3
0
 public static String calculateMD5(File updateFile) {
   MessageDigest digest;
   try {
     digest = MessageDigest.getInstance("MD5");
   } catch (NoSuchAlgorithmException e) {
     Log.e(TAG, "Exception while getting Digest", e);
     return null;
   }
   InputStream is;
   try {
     is = new FileInputStream(updateFile);
   } catch (FileNotFoundException e) {
     Log.e(TAG, "Exception while getting FileInputStream", 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) {
       Log.e(TAG, "Exception on closing MD5 input stream", e);
     }
   }
 }