91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 6KB
    文件類型: .java
    金幣: 1
    下載: 1 次
    發布日期: 2021-06-08
  • 語言: Java
  • 標簽: Java??MD5??

資源簡介

Java實現MD5大文件校驗碼詳細解析: 包括具體方法解釋、注釋 通俗易懂、易于理解

資源截圖

代碼片段和文件信息

/**
?*?java實現生成MD5文件校驗碼
?*?2015-11-30
?*/

package?org.jivesoftware.sparkimpl.plugin.fonts;

import?java.io.File;??
import?java.io.FileInputStream;??
import?java.io.IOException;??
import?java.nio.MappedByteBuffer;??
import?java.nio.channels.FileChannel;??
import?java.security.MessageDigest;
import?java.security.NoSuchAlgorithmException;??

/**
?*??MD5計算調用即可得到MD5的128位整數
?*??MessageDigest?類是一個引擎類,它是為了提供諸如?SHA1?或?MD5?等密碼上安全的報文摘要功能而設計的。
?*??密碼上安全的報文摘要可接受任意大小的輸入(一個字節數組),并產生固定大小的輸出,該輸出稱為一個摘要或散列。摘要具有以下屬性:
?*??1.無法通過計算找到兩個散列成相同值的報文。
?*??2.摘要不反映任何與輸入有關的內容。
?*??使用報文摘要可以生成數據唯一且可靠的標識符。有時它們被稱為數據的“數字指紋”。
?*/
public?class?MD5?{??
//首先初始化一個字符數組,用來存放每個16進制字符
????protected?static?char?hexDigits[]?=?{?‘0‘?‘1‘?‘2‘?‘3‘?‘4‘?‘5‘?‘6‘‘7‘?‘8‘?‘9‘?‘a‘?‘b‘?‘c‘?‘d‘?‘e‘?‘f‘?};????
????protected?static?MessageDigest?messageDigest?=?null;??
????static?{??
????????try?{
???????? /**
???????? ?*??創建?MessageDigest?對象
???????? ?*??創建報文摘要實例:
???????? ?*??象所有的引擎類一樣,獲取某類報文摘要算法的?MessageDigest?對象的途徑是
???????? ?*??調用?MessageDigest?類中的?getInstance?靜態?factory?方法
???????? ?*/
????????????messageDigest?=?MessageDigest.getInstance(“MD5“);
????????????//拿到一個MD5轉換器,返回實現指定摘要算法的?MessageDigest?對象。??
????????}?catch?(NoSuchAlgorithmException?nsaex)?{??
????????????System.err.println(MD5.class.getName()+“初始化失敗,MessageDigest不支持MD5!“);??
????????????nsaex.printStackTrace();??
????????}??
????}??
??
????public?static?void?main(String[]?args)?throws?IOException?{??
????????long?begin?=?System.currentTimeMillis();??
??
????????File?big?=?new?File(“C:\\clk\\eclipse.rar“);//文件絕對路徑??
????????String?md5?=?getFileMD5String(big);??
????????//String?md5?=?getMD5String(“a“);??
????????long?end?=?System.currentTimeMillis();??
????????System.out.println(“md5:“?+?md5?+?“?time:“?+?((end?-?begin)?/?1000)?+?“s“);??
????}??
????/**?
?????*?計算文件的MD5?
?????*?@param?file?文件對象?
?????*?@return?
?????*?@throws?IOException?
?????*/?
????public?static?String?getFileMD5String(File?file)?throws?IOException?{??
????????FileInputStream?in?=?new?FileInputStream(file);??
????????FileChannel?ch?=?in.getChannel();??
??????????
????????//緩沖區大小(這個可以抽出一個參數)??
????????int?maxSize=?256?*?1024;??
??????????
????????long?startPosition=0L;??
????????long?step=file.length()/maxSize;??
????????/**
?????????*??MappedByteBuffer?將文件直接映射到內存(這里的內存指的是虛擬內存,并不是物理內存,后面說證明這一點)。
?????????*??通常,可以映射整個文件,如果文件比較大的話可以分段進行映射,只要指定文件的那個部分就可以。
?????????*??而且,與ByteBuffer十分類似,沒有構造函數(你不可new?MappedByteBuffer()來構造一個MappedByteBuffer),
?????????*??我們可以通過?java.nio.channels.FileChannel?的?map()?方法來獲取?MappedByteBuffer?。
?????????*??其實說的通俗一點就是Map把文件的內容被映像到計算機虛擬內存的一塊區域,
???????

評論

共有 條評論