คัดลอกรหัสรหัสดังต่อไปนี้:
MD5Check ระดับสาธารณะ {
-
* ชุดสตริงรหัสผ่านเริ่มต้นใช้ในการแปลงไบต์เป็นอักขระเลขฐานสิบหก Apache ใช้ชุดค่าผสมเริ่มต้นนี้เพื่อตรวจสอบความถูกต้องของไฟล์ที่ดาวน์โหลด
-
ถ่าน hexDigits ที่ป้องกันไว้[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a' , 'b', 'c', 'd', 'e', 'f' };
ป้องกัน MessageDigest messagedigest = null;
-
พยายาม {
messagedigest = MessageDigest.getInstance("MD5");
} จับ (NoSuchAlgorithmException e) {
e.printStackTrace();
-
-
สตริงสาธารณะ getFileMD5String (ไฟล์ไฟล์) พ่น IOException {
ช่อง InputStream;
fis = FileInputStream ใหม่ (ไฟล์);
ไบต์ [] บัฟเฟอร์ = ไบต์ใหม่ [1024];
int numRead = 0;
ในขณะที่ ((numRead = fis.read(บัฟเฟอร์)) > 0) {
messagedigest.update (บัฟเฟอร์, 0, numRead);
-
fis.ปิด();
กลับ bufferToHex (messagedigest.digest ());
-
สตริงสาธารณะ getFileMD5String (InputStream ใน) พ่น IOException {
ไบต์ [] บัฟเฟอร์ = ไบต์ใหม่ [1024];
int numRead = 0;
ในขณะที่ ((numRead = in.read (บัฟเฟอร์)) > 0) {
messagedigest.update (บัฟเฟอร์, 0, numRead);
-
ใน.ปิด();
กลับ bufferToHex (messagedigest.digest ());
-
สตริงส่วนตัว bufferToHex (ไบต์ไบต์ []) {
กลับ bufferToHex (ไบต์, 0, ไบต์ความยาว);
-
สตริงส่วนตัว bufferToHex (ไบต์ไบต์ [], int m, int n) {
StringBuffer stringbuffer = StringBuffer ใหม่ (2 * n);
int k = m + n;
สำหรับ (int l = m; l < k; l++) {
ผนวกHexPair (ไบต์ [l], stringbuffer);
-
กลับ stringbuffer.toString();
-
โมฆะส่วนตัว appendHexPair (ไบต์ bt, StringBuffer stringbuffer) {
char c0 = hexDigits[(bt & 0xf0) >> 4];//รับการแปลงดิจิทัลของ 4 บิตบนในไบต์
// มันเป็นการเลื่อนไปทางขวาแบบลอจิคัล และบิตของเครื่องหมายจะถูกเลื่อนไปทางขวาพร้อมกัน ไม่พบความแตกต่างระหว่างสัญลักษณ์ทั้งสองนี้
char c1 = hexDigits[bt & 0xf]; // รับการแปลงดิจิทัลของ 4 บิตล่างในไบต์
stringbuffer.ผนวก(c0);
stringbuffer.ผนวก(c1);
-
-