MD5檔案校驗碼生成java程式碼
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Util { /** * 預設的密碼字串組合,用來將位元組轉換成 16 進製表示的字元,apache校驗下載的檔案的正確性用的就是預設的這個組合 */ 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.getInstance("MD5"); } catch (NoSuchAlgorithmException nsaex) { System.err.println(MD5Util.class.getName() + "初始化失敗,MessageDigest不支援MD5Util。"); nsaex.printStackTrace(); } } /** * 生成字串的md5校驗值 * * @param s * @return */ public static String getMD5String(String s) { return getMD5String(s.getBytes()); } /** * 判斷字串的md5校驗碼是否與一個已知的md5碼相匹配 * * @param password 要校驗的字串 * @param md5PwdStr 已知的md5校驗碼 * @return */ public static boolean checkPassword(String password, String md5PwdStr) { String s = getMD5String(password); return s.equals(md5PwdStr); } /** * 生成檔案的md5校驗值 * * @param file * @return * @throws IOException */ public static String getFileMD5String(File file) throws IOException { InputStream fis; fis = new FileInputStream(file); byte[] buffer = new byte[1024]; int numRead = 0; while ((numRead = fis.read(buffer)) > 0) { messagedigest.update(buffer, 0, numRead); } fis.close(); return bufferToHex(messagedigest.digest()); } /** * JDK1.4中不支援以MappedByteBuffer型別為引數update方法,並且網上有討論要慎用MappedByteBuffer, * 原因是當使用 FileChannel.map 方法時,MappedByteBuffer 已經在系統內佔用了一個控制代碼, * 而使用 FileChannel.close 方法是無法釋放這個控制代碼的,且FileChannel有沒有提供類似 unmap 的方法, * 因此會出現無法刪除檔案的情況。 * * 不推薦使用 * * @param file * @return * @throws IOException */ public static String getFileMD5String_old(File file) throws IOException { FileInputStream in = new FileInputStream(file); FileChannel ch = in.getChannel(); MappedByteBuffer byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, 0, file.length()); messagedigest.update(byteBuffer); in.close(); return bufferToHex(messagedigest.digest()); } public static String getMD5String(byte[] bytes) { messagedigest.update(bytes); return bufferToHex(messagedigest.digest()); } private static String bufferToHex(byte bytes[]) { return bufferToHex(bytes, 0, bytes.length); } private static String bufferToHex(byte bytes[], int m, int n) { StringBuffer stringbuffer = new StringBuffer(2 * n); int k = m + n; for (int l = m; l < k; l++) { appendHexPair(bytes[l], stringbuffer); } return stringbuffer.toString(); } private static void appendHexPair(byte bt, StringBuffer stringbuffer) { char c0 = hexDigits[(bt & 0xf0) >> 4];// 取位元組中高 4 位的數字轉換, >>> 為邏輯右移,將符號位一起右移,此處未發現兩種符號有何不同 char c1 = hexDigits[bt & 0xf];// 取位元組中低 4 位的數字轉換 stringbuffer.append(c0); stringbuffer.append(c1); } public static void main(String[] args) throws IOException { long begin = System.currentTimeMillis(); File file = new File("E:/txt.txt"); if(!file.exists()){ System.out.println("不存在"); } String md5 = getFileMD5String(file); // String md5 = getMD5String("a"); long end = System.currentTimeMillis(); System.out.println("md5:" + md5 + " time:" + ((end - begin) / 1000) + "s"); System.out.println(file.getPath()); }
相關推薦
MD5檔案校驗碼生成java程式碼
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.nio.MappedByteBu
java實現CRC16校驗碼生成
public static String crc16(String gprsstr) { try { int crc; int strlength, r; byte sbit; int tc; strlength = gprsstr.len
獲取檔案MD5,SHA1校驗碼
下載完軟體,如果對於輸入源不放心可以對比檔案的md5碼或者網站上提供的校驗碼: windows系統使用hashtab軟體 linux,mac系統可以使用命令獲取: /usr/bin/openssl s
CRC校驗碼生成與資料校驗原始碼程式 (包括CRC-4,5,6,7,8,16,32)
C程式碼 收藏程式碼 /******************************************************************** * Name: CRC-4/ITU x4+x+1 *
PHP MD5檔案校驗 判斷檔案是否相同
對於一個類似網盤或者圖片分享功能的平臺來說,單個檔案的重複上傳是個挺煩人的事情,佔空間啊。 使用md5_file函式即可解決這個問題。 以下為比較兩個檔案是否相同的方法demo例項 <?php function md5FileCheck($filename1, $filename2) { $m1 =
Android MD5校驗碼的生成與演算法實現
在Java中,java.security.MessageDigest (rt.jar中)已經定義了 MD5 的計算,所以我們只需要簡單地呼叫即可得到 MD5 的128 位整數。然後將此 128 位計 16 個位元組轉換成 16 進製表示即可。 下面是一個可生成
使用PowerShell 的Get-FileHash 命令為檔案生成校驗碼
PowerShell is an automation platform and scripting language for Windows and Windows Server that allows you to simplify the management of
java modbus crc16校驗碼 socket給傳送的資料新增crc校驗碼
首先crc16校驗碼的生成的原理在上一篇部落格裡面已經說過了; 前提:xframe配置京金華伺服器的埠號,繫結ip地址和埠號 程式要實現什麼? 這個程式主要實現的是伺服器傳送資料到客戶端,然後客戶端傳送資料到伺服器端; 是一問一答的形式; 只有伺服器傳送,客戶端才會應答 傳送
模擬RSA雙向驗證,並且實現DES加密以及MD5校驗過程(python程式碼實現)
要求如下: (1)A,B兩端各生成公鑰金鑰對(PA,SA), 金鑰對(PB,SB)。 (2)A端生成隨機數N1,用B的公鑰PB加
如何計算檔案MD5 sha1 -- 微軟MD5/SHA1 校驗工具 Microsoft File Checksum Integrity Verifier
微軟出品的小工具(Microsoft File Checksum Integrity Verifier)。 https://www.microsoft.com/en-us/download/detai
C#實現字串,檔案獲取Md5加密校驗方法
http://jingyan.baidu.com/article/db55b6099758134ba30a2f1a.html Md5是一種雜湊演算法,理論上是不可解密的,而且重複的機率極小極小,因此在平常的密碼儲存上應用比較廣泛,這個值一般情況下是唯一的,所以在檔案校驗
基於openapi3.0的yaml檔案生成java程式碼的一次實踐
在github上看了swagger-api專案(https://github.com/swagger-api/swagger-codegen)中的一些文件以及swagger-codegen的使用說明,還是覺得有些麻煩,該專案中有提到使用swagger-codeg
集裝箱編號校驗碼規則及java/JavaScript的實現
{ if ((str=="a")||(str=="A")) return10; elseif ((str=="b")||(str=="B")) return12; elseif ((str=="c")||(str=="C")) return13;
學習如何使用Mybatis-generator 自動生成java程式碼以及Mapper檔案
今天用到了mybatis 中 自動生成程式碼的外掛即 mybatis-generator 來生成程式碼。具體步驟如下。 首先建立一個資料夾這裡命名為 generator (這裡使用的是sqlserver 資料庫) 接著新建xml檔案進行配置 最後以命令列的
JAVA CRC16校驗碼計算
package com.hcs.lqjc.controller.dongDaHengFeng.ModBus.utils; /** * @author lwt * @date 2018-06-26 * * CRC16校驗碼計算 * <p> * (1).
集裝箱編號校驗碼規則及java程式的實現
由於工作原因要接觸到集裝箱編號,便了解了下集裝箱編號最後一位校驗位的規則順便寫了個程式實現,找了一批編號,驗證通過,貼出來做個記錄。 集裝箱校驗碼校驗規則: 集裝箱號由4位公司程式碼和7位數字組成(如CBHU3202732),其中第七位數字就是校驗碼。
CRC 實現,生成校驗碼和驗證
class CrcClass { static ushort[] crc_table = { 0x0000 , 0x1021 , 0x2042 , 0x3063 , 0x
MOD 10,11演算法(GB/T 17710-1999 資料處理 校驗碼系統 )的Java實現
public static int GB17710_1011(String str) { char[] strTmp = str.toCharArray(); int[] aArray, pArray, sArray;
PHP 檔案校驗 檔案的 MD5 雜湊值
PHP MD5 雜湊值 應用場景: 1、校驗檔案的完整性 可用於伺服器檔案的備份處理。 2、檢驗檔案的重複性 去除伺服器上傳檔案的重複,佔用額外空間的問題。 3、校驗檔案是否被篡改 下載網站,多會放置MD5校驗碼,用於校驗檔案。 PHP校驗程
Java之MD5值校驗
<<首先宣告本文內容有參考網上資源,文章開頭我首先要向他們表示感謝,眾包力量無窮啊>> 之前學過《電腦保安》這門課,瞭解了MD5,不過沒有自己具體實現過,今天講的也只是呼叫java包中已提供的相關功能 MD5這