ImportJava.io.FileInputStream;ImportJava.security.DigestInputStream;Importjava.security.MessageDigest;Importjava.security.NoSuchAlgorithmException; Public classMd5class {//computes the MD5 of a string Public Staticstring conVertTextToMD5 (string plaintext) {Try{messagedigest MD= Messagedigest.getinstance ("MD5"); Md.update (Plaintext.getbytes ()); byteB[] =md.digest (); inti; StringBuffer buf=NewStringBuffer (""); for(intoffset = 0; Offset < b.length; offset++) {i=B[offset]; if(I < 0) I+ = 256; if(I < 16) Buf.append ("0"); Buf.append (integer.tohexstring (i)); } //32-bit encryption returnbuf.tostring (); //16-bit encryption//return buf.tostring (). substring (8);}Catch(nosuchalgorithmexception e) {e.printstacktrace (); return NULL; } }
Calculate file MD5, support 4G file (file Pro test, large file not pro test) Public Staticstring conVertFileToMD5 (String inputfilepath) {intbuffersize = 256 * 1024; FileInputStream FileInputStream=NULL; Digestinputstream Digestinputstream=NULL; Try { //Get a MD5 converter (again, here you can switch to SHA1)messagedigest messagedigest= Messagedigest.getinstance ("MD5"); //using DigestinputstreamFileInputStream=NewFileInputStream (Inputfilepath); Digestinputstream=NewDigestinputstream (FileInputStream, messagedigest); //MD5 processing During the read process until the file is finished byte[] buffer =New byte[buffersize]; while(Digestinputstream.read (buffer) > 0) ; //get the final messagedigestMessageDigest=digestinputstream.getmessagedigest (); //Get the result, also a byte array, containing 16 elements byte[] Resultbytearray =messagedigest.digest (); //Similarly, converting a byte array to a string returnBytearraytohex (Resultbytearray); } Catch(Exception e) {return NULL; } finally { Try{digestinputstream.close (); } Catch(Exception e) {}Try{fileinputstream.close (); } Catch(Exception e) {}}} Private StaticString Bytearraytohex (byte[] byteArray) { //First initialize a character array to hold each 16-character Char[] hexdigits = {' 0 ', ' 1 ', ' 2 ', ' 3 ', ' 4 ', ' 5 ', ' 6 ', ' 7 ', ' 8 ', ' 9 ', ' A ', ' B ', ' C ', ' D ', ' E ', ' F ' }; //new A character array, which is used to compose the result string (explanation: A byte is a eight-bit binary, which is the 2-bit hexadecimal character (2 of 8 is equal to 16 of the 2-second party)) Char[] Resultchararray =New Char[Bytearray.length * 2]; //iterates through byte arrays, converts characters into character arrays by bitwise operations (high efficiency of bitwise operations) intindex = 0; for(byteB:bytearray) {Resultchararray[index+ +] = hexdigits[b >>> 4 & 0xf]; Resultchararray[index+ +] = hexdigits[b & 0xf]; } //character array group composition string return return NewString (Resultchararray); } Public Static voidMain (string[] args) {//TestSystem.out.println (md5class.converttexttomd5 ("Hello")); System.out. println (ConVertFileToMD5 ("C:\\users\\administrator1\\downloads\\staruml-v2.8.0.msi")); }}
Java implementation Calculation MD5