Android檢驗下載的文件的完整性


在應用開發中往往需要將下載成功的文件進行MD5校驗,就是獲取一個文件的消息摘要,每個文件生成的摘要都是獨一無二的,生成的消息摘要是128位(16個字節)的數據,一般都需要將他們轉換成十六進制的字符串。將十進制數轉換成十六進制可以使用Integer.toHexString(int num),只要低八位可以使用0xff & num就只會截取32位的整型數值的低八位。

 

測試程序:

MessageDigest degest = MessageDigest.getInstance("MD5");
FileInputStream inputStream=new FileInputStream("test.txt");
DigestInputStream dis=new DigestInputStream(inputStream, degest);//對於大文件或者網絡文件使用輸入流的形式要比字節數組方便很多也節省內存
byte[] buffer=new byte[8986];
ByteArrayOutputStream fileOutput=new ByteArrayOutputStream();
while((dis.read(buffer))!=-1){
//跟讀普通輸入流是一樣的,原理就是需要將輸入流讀完后,再調用digest方法才能獲取整個文件的MD5
  
fileOutput.write(buffer);
}
String fileContent=fileOutput.toString();//讀取到的文件的內容
byte[] sumary=degest.digest();
StringBuffer strBuffer = new StringBuffer();
for (int i = 0; i < sumary.length; i++) {
  String tmp=Integer.toHexString(sumary[i]&0xff);
  if(tmp.length()==1)//如果這個字節的值小於16,那么轉換的就只有一個字符,所以需要手動添加一個字符“0”,
    tmp="0"+tmp; strBuffer.append(tmp
); } System.out.println(strBuffer.toString());

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM