दिलचस्प पोस्ट
स्क्रीन के किसी भी स्थिति में अलर्ट डाइलॉग दिखाएं बाश में 2 डी सरणी कैसे घोषित करें वॉली – पोस्ट / जीपी पैरामीटर सी ++ मल्टीचैरैक्टर शाब्दिक उपयोगकर्ता 'रूट @ लोकलहोस्ट' के लिए प्रवेश निषेध (पासवर्ड का उपयोग करते हुए: नहीं) Android एमुलेटर प्रॉक्सी सेटिंग्स सेटअप करने के लिए कैसे? एक चिड़ियाघर से वर्ष और वर्ष निकालें :: वर्ष वस्तु जावास्क्रिप्ट का उपयोग करने के लिए विशिष्ट समयक्षेत्र का समय कैसे प्राप्त करें? pythonw.exe या python.exe? 8080 से 80 तक टॉमकेट का बंदरगाह कैसे बदल सकता है? किसी दृश्य में प्रोग्राम विशेषता सेटिंग कैसे करें स्प्रिंग में ऑटोचेयरिंग कैसे काम करता है? JQuery के साथ कुकीज़ बनाएं, पढ़ें और मिटाएं पता लगाएँ कि ऐप को पुश अधिसूचना से लॉन्च किया गया था या खोला गया था रोटेशन एंड्रॉइड पर गतिविधि पुनः आरंभ

मैं एक एमडी 5 हैश कैसे बना सकता हूँ?

क्या जावा में एक स्ट्रिंग के एमडी 5 हैश उत्पन्न करने के लिए कोई तरीका है?

वेब के समाधान से एकत्रित समाधान "मैं एक एमडी 5 हैश कैसे बना सकता हूँ?"

java.security.MessageDigest आपका दोस्त है getInstance("MD5") 5 संदेश डायजेस्ट प्राप्त करने के लिए आपको कॉल getInstance("MD5") का इस्तेमाल कर सकते हैं।

MessageDigest क्लास आपको MD5 डाइजेस्ट का एक उदाहरण प्रदान कर सकता है।

तार और क्रिप्टो कक्षाओं के साथ काम करते समय हमेशा एन्कोडिंग को निर्दिष्ट करना सुनिश्चित करें जिसमें आप बाइट प्रस्तुतिकरण चाहते हैं। यदि आप केवल string.getBytes() का उपयोग करते हैं तो यह प्लेटफ़ॉर्म डिफ़ॉल्ट का उपयोग करेगा। (सभी प्लेटफॉर्म्स समान चूक का उपयोग नहीं करते हैं)

 import java.security.*; .. byte[] bytesOfMessage = yourString.getBytes("UTF-8"); MessageDigest md = MessageDigest.getInstance("MD5"); byte[] thedigest = md.digest(bytesOfMessage); 

यदि आपके पास बहुत से डेटा हैं .update(byte[]) विधि जो बार-बार कहा जा सकता है पर एक नज़र डालते हैं। फिर कॉल करें। .digest() परिणामी हैश प्राप्त करने के लिए

आप अपाचे कॉमन्स कोडेक प्रोजेक्ट के डाइजेस्टउल्ट्स क्लास को भी देखना चाहेंगे, जो एमडी 5 या एसएचए डिजीस्ट बनाने के लिए बहुत सुविधाजनक तरीके प्रदान करता है।

यदि आप वास्तव में एक बाइट सरणी के विरोध में एक स्ट्रिंग के रूप में जवाब वापस चाहते हैं, तो आप हमेशा ऐसा कुछ कर सकते हैं:

 String plaintext = "your text here"; MessageDigest m = MessageDigest.getInstance("MD5"); m.reset(); m.update(plaintext.getBytes()); byte[] digest = m.digest(); BigInteger bigInt = new BigInteger(1,digest); String hashtext = bigInt.toString(16); // Now we need to zero pad it if you actually want the full 32 chars. while(hashtext.length() < 32 ){ hashtext = "0"+hashtext; } 

यह पाया:

 public String MD5(String md5) { try { java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5"); byte[] array = md.digest(md5.getBytes()); StringBuffer sb = new StringBuffer(); for (int i = 0; i < array.length; ++i) { sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1,3)); } return sb.toString(); } catch (java.security.NoSuchAlgorithmException e) { } return null; } 

नीचे साइट पर, मैं इसके लिए कोई क्रेडिट नहीं लेता है, लेकिन इसका समाधान जो काम करता है! मेरे लिए बहुत सारे अन्य कोड ठीक से काम नहीं हुए, मुझे हैश में 0s गुम हो गया यह एक ऐसा लगता है जैसे PHP है। स्रोत: http://m2tec.be/blog/2010/02/03/java-md5-hex-0093

यहां इसका उपयोग कैसे किया जाता है:

 final MessageDigest messageDigest = MessageDigest.getInstance("MD5"); messageDigest.reset(); messageDigest.update(string.getBytes(Charset.forName("UTF8"))); final byte[] resultByte = messageDigest.digest(); final String result = new String(Hex.encodeHex(resultByte)); 

जहां हेक्स है: अपाचे कॉमन्स परियोजना से org.apache.commons.codec.binary.Hex

मैं बस कॉमन्स- codec.jar डाउनलोड किया है और एमडी 5 की तरह सही php मिला है। यहाँ मैनुअल है

बस इसे अपने प्रोजेक्ट और उपयोग में आयात करें

 String Url = "your_url"; System.out.println( DigestUtils.md5Hex( Url ) ); 

आखिर तुमने इसे हासिल कर ही लिया है।

मैंने यह करने के लिए यह सबसे स्पष्ट और संक्षिप्त तरीका पाया है:

 MessageDigest md5 = MessageDigest.getInstance("MD5"); md5.update(StandardCharsets.UTF_8.encode(string)); return String.format("%032x", new BigInteger(1, md5.digest())); 

यह समाधान मिला जो कि एक MD5 हैश से वापस स्ट्रिंग प्रतिनिधित्व प्राप्त करने के मामले में बहुत साफ है।

 import java.security.*; import java.math.*; public class MD5 { public static void main(String args[]) throws Exception{ String s="This is a test"; MessageDigest m=MessageDigest.getInstance("MD5"); m.update(s.getBytes(),0,s.length()); System.out.println("MD5: "+new BigInteger(1,m.digest()).toString(16)); } } 

कोड यहाँ से निकाला गया था।

एक और विकल्प है कि अमरीका के हेशिंग तरीकों का इस्तेमाल करना:

 Hasher hasher = Hashing.md5().newHasher(); hasher.putString("my string"); byte[] md5 = hasher.hash().asBytes(); 

अगर आप पहले से ही अमरूद का उपयोग कर रहे हैं (यदि आप नहीं हैं, तो आप शायद होना चाहिए)

एक अन्य क्रियान्वयन:

 import javax.xml.bind.DatatypeConverter; String hash = DatatypeConverter.printHexBinary( MessageDigest.getInstance("MD5").digest("SOMESTRING".getBytes("UTF-8"))); 

मेरे पास हथेली में सादे टेक्स्ट को प्रारूप में परिवर्तित करने के लिए एक वर्ग (हैश) है: एमडी 5 या शाए 1, सिमिलर कि पीएचपी फ़ंक्शंस ( एमडी 5 , शाए 1 ):

 public class Hash { /** * * @param txt, text in plain format * @param hashType MD5 OR SHA1 * @return hash in hashType */ public static String getHash(String txt, String hashType) { try { java.security.MessageDigest md = java.security.MessageDigest.getInstance(hashType); byte[] array = md.digest(txt.getBytes()); StringBuffer sb = new StringBuffer(); for (int i = 0; i < array.length; ++i) { sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1,3)); } return sb.toString(); } catch (java.security.NoSuchAlgorithmException e) { //error action } return null; } public static String md5(String txt) { return Hash.getHash(txt, "MD5"); } public static String sha1(String txt) { return Hash.getHash(txt, "SHA1"); } } 

JUnit और PHP के साथ परीक्षण

PHP स्क्रिप्ट:

 <?php echo 'MD5 :' . md5('Hello World') . "\n"; echo 'SHA1:' . sha1('Hello World') . "\n"; 

आउटपुट PHP स्क्रिप्ट:

 MD5 :b10a8db164e0754105b7a99be72e3fe5 SHA1:0a4d55a8d778e5022fab701977c5d840bbc486d0 

ज्यूनेट के साथ उदाहरण और परीक्षण का उपयोग करना:

  public class HashTest { @Test public void test() { String txt = "Hello World"; assertEquals("b10a8db164e0754105b7a99be72e3fe5", Hash.md5(txt)); assertEquals("0a4d55a8d778e5022fab701977c5d840bbc486d0", Hash.sha1(txt)); } } 

गिटहब में कोड

https://github.com/fitorec/java-hashes

मेरा बहुत खुलासा नहीं है:

 private String md5(String s) { try { MessageDigest m = MessageDigest.getInstance("MD5"); m.update(s.getBytes(), 0, s.length()); BigInteger i = new BigInteger(1,m.digest()); return String.format("%1$032x", i); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return null; } 

बॉंबे का जवाब सही है, हालांकि ध्यान दें कि जब तक आप बिल्कुल MD5 का उपयोग नहीं करना चाहते (जैसे अंतर पर आप के लिए मजबूर हो), एक बेहतर विकल्प SHA1 है क्योंकि MD5 में दीर्घकालिक उपयोग के लिए कमजोरियां हैं।

मुझे यह जोड़ना चाहिए कि SHA1 में सैद्धांतिक कमजोरियों भी हैं, लेकिन गंभीर नहीं हैं हैशिंग में कला की वर्तमान स्थिति यह है कि कई अभ्यर्थी प्रतिस्थापन हैश फ़ंक्शन हैं लेकिन कोई भी अभी तक SHA1 को बदलने के लिए मानक सर्वोत्तम अभ्यास के रूप में उभरा नहीं है इसलिए, आपकी ज़रूरतों के आधार पर आपको अच्छी तरह से सलाह दी जाएगी कि आप अपने हैश एल्गोरिथ्म को कॉन्फ़िगर करने योग्य बनायें ताकि भविष्य में इसे बदला जा सके।

इसे बहुत जटिल बनाने की आवश्यकता नहीं है डाइजेस्ट यूथल्स ठीक काम करती है और एमडी 5 हैश के साथ काम करते हुए आपको आराम देती है।

 DigestUtils.md5Hex(_hash); 

या

 DigestUtils.md5(_hash); 

या तो आप किसी अन्य एन्क्रिप्शन विधियों जैसे कि sha या md का उपयोग कर सकते हैं

आप निम्नलिखित की कोशिश कर सकते हैं यहां विवरण और डाउनलोड कोड देखें: http://www.luyue.org/java-hashgenerator-md5-sha-1/

 import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Example { public static void main(String[] args) throws Exception { final String inputString = "Hello MD5"; System.out.println("MD5 hex for '" + inputString + "' :"); System.out.println(getMD5Hex(inputString)); } public static String getMD5Hex(final String inputString) throws NoSuchAlgorithmException { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(inputString.getBytes()); byte[] digest = md.digest(); return convertByteToHex(digest); } private static String convertByteToHex(byte[] byteData) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < byteData.length; i++) { sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1)); } return sb.toString(); } } 

स्प्रिंग में एक DigestUtils वर्ग भी है:

http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/util/DigestUtils.html

इस वर्ग में विधि md5DigestAsHex() है जो काम करता है।

एक अन्य कार्यान्वयन: जावा में फास्ट एमडी 5 कार्यान्वयन

 String hash = MD5.asHex(MD5.getHash(new File(filename))); 

मुझे नहीं पता कि यह पढ़ना किसी के लिए प्रासंगिक है या नहीं, लेकिन मुझे सिर्फ यही समस्या थी जिसे मैं करना चाहता था

  • दिए गए यूआरएल से एक फाइल डाउनलोड करें और
  • एक ज्ञात मूल्य के लिए अपने एमडी 5 की तुलना करें।

मैं इसे केवल जेआरई कक्षाओं के साथ करना चाहता था (कोई अपाचे कॉमन्स या समान नहीं)। एक त्वरित वेब खोज ने मुझे एक ही समय में दोनों को नमूना कोड स्निपेट नहीं दिखाया था, केवल प्रत्येक कार्य अलग-अलग क्योंकि इसने दो बार एक ही फाइल को पढ़ने की आवश्यकता की है, मुझे लगा कि यह कुछ समय लिख सकता है, जो कुछ कोड लिखता है जो दोनों कार्यों को जोड़ता है, फ़ाइल डाउनलोड करते समय उड़ान भरने पर चेकसम की गणना करता है। यह मेरा परिणाम है (यदि यह संपूर्ण जावा नहीं है, तो खेद है, लेकिन मुझे लगता है कि आप वैसे भी विचार प्राप्त करते हैं):

 import java.io.FileOutputStream; import java.io.IOException; import java.math.BigInteger; import java.net.URL; import java.nio.ByteBuffer; import java.nio.channels.Channels; import java.nio.channels.ReadableByteChannel; import java.nio.channels.WritableByteChannel; import java.security.DigestOutputStream; // new import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; void downloadFile(String fromURL, String toFile, BigInteger md5) throws IOException, NoSuchAlgorithmException { ReadableByteChannel in = Channels.newChannel(new URL(fromURL).openStream()); MessageDigest md5Digest = MessageDigest.getInstance("MD5"); WritableByteChannel out = Channels.newChannel( //new FileOutputStream(toFile)); // old new DigestOutputStream(new FileOutputStream(toFile), md5Digest)); // new ByteBuffer buffer = ByteBuffer.allocate(1024 * 1024); // 1 MB while (in.read(buffer) != -1) { buffer.flip(); //md5Digest.update(buffer.asReadOnlyBuffer()); // old out.write(buffer); buffer.clear(); } BigInteger md5Actual = new BigInteger(1, md5Digest.digest()); if (! md5Actual.equals(md5)) throw new RuntimeException( "MD5 mismatch for file " + toFile + ": expected " + md5.toString(16) + ", got " + md5Actual.toString(16) ); } 

MD5 पूरी तरह से ठीक है अगर आपको सबसे अच्छी सुरक्षा की आवश्यकता नहीं है, और अगर आप फ़ाइल अखंडता की जाँच करने की तरह कुछ कर रहे हैं तो सुरक्षा एक विचार नहीं है। ऐसे मामले में आप कुछ सरल और तेज, जैसे Adler32, पर विचार करना चाह सकते हैं, जो जावा पुस्तकालयों द्वारा भी समर्थित है।

इसके लिए क्या कीमत है, मैं इस पर ठोकर खाई क्योंकि मैं कॉम घटकों को स्थापित करने वाले एक प्रोग्राम के लिए एक प्राकृतिक कुंजी से GUID को संश्लेषित करना चाहता हूं; मैं इतना संहिताकरण करना चाहता हूं ताकि GUID जीवनचक्र का प्रबंधन न हो। मैं MD5 का उपयोग करूँगा और उसके बाद एक स्ट्रिंग प्राप्त करने के लिए UUID वर्ग का उपयोग करूँगा। (http://stackoverflow.com/questions/2190890/how-can-i-generate-guid-for-a-string-values/12867439 इस समस्या को बढ़ाता है)।

किसी भी मामले में, java.util.UUID आपको MD5 बाइट्स से एक अच्छी स्ट्रिंग प्राप्त कर सकता है।

 return UUID.nameUUIDFromBytes(md5Bytes).toString(); 

निम्नलिखित लिंक पर एक नज़र डालें, उदाहरण को एक आपूर्ति की गई छवि का एक MD5 हैश मिलता है : एक छवि का MD5 हैश

यह एक सटीक एमडी 5 देता है जैसा कि आप mysql के md5 फ़ंक्शन या php के md5 फ़ंक्शंस आदि से प्राप्त करते हैं। यह मैं जिस का उपयोग करता हूं (आप अपनी आवश्यकताओं के अनुसार बदल सकते हैं)

 public static String md5( String input ) { try { java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5"); byte[] array = md.digest(input.getBytes( "UTF-8" )); StringBuffer sb = new StringBuffer(); for (int i = 0; i < array.length; i++) { sb.append( String.format( "%02x", array[i])); } return sb.toString(); } catch ( NoSuchAlgorithmException | UnsupportedEncodingException e) { return null; } } 

PHP के विपरीत, जहां आप एमडी 5 फ़ंक्शन यानी md5($text) कॉल करके जावा में अपने एमडी 5 एन्क्रिप्शन कर सकते हैं, इसे थोड़ा जटिल बना दिया गया था। मैंने आमतौर पर इसे एक फ़ंक्शन बुलाकर कार्यान्वित किया है जो एमडी 5 हैश पाठ लौटाता है। यहां बताया गया है कि मैंने इसे कैसे कार्यान्वित किया है, सबसे पहले नीचे दिए गए अपने मुख्य वर्ग के अंदर md5encryption नामक फ़ंक्शन बनाएँ।

 public static String md5encryption(String text) { String hashtext = null; try { String plaintext = text; MessageDigest m = MessageDigest.getInstance("MD5"); m.reset(); m.update(plaintext.getBytes()); byte[] digest = m.digest(); BigInteger bigInt = new BigInteger(1,digest); hashtext = bigInt.toString(16); // Now we need to zero pad it if you actually want the full 32 chars. while(hashtext.length() < 32 ){ hashtext = "0"+hashtext; } } catch (Exception e1) { // TODO: handle exception JOptionPane.showMessageDialog(null,e1.getClass().getName() + ": " + e1.getMessage()); } return hashtext; } 

अब फ़ंक्शन को कॉल करें जब आपको नीचे दिए गए अनुसार आवश्यक हो।

 String text = textFieldName.getText(); String pass = md5encryption(text); 

यहां आप देख सकते हैं कि एचएएचटीएक्स को एमएस 5 एन्क्रिप्शन के साथ PHP में मेल करने के लिए शून्य के साथ जोड़ दिया गया है।

 import java.security.MessageDigest val digest = MessageDigest.getInstance("MD5") //Quick MD5 of text val text = "MD5 this text!" val md5hash1 = digest.digest(text.getBytes).map("%02x".format(_)).mkString //MD5 of text with updates digest.update("MD5 ".getBytes()) digest.update("this ".getBytes()) digest.update("text!".getBytes()) val md5hash2 = digest.digest().map(0xFF & _).map("%02x".format(_)).mkString //Output println(md5hash1 + " should be the same as " + md5hash2) 

इसे इस्तेमाल करे:

 public static String getHashMD5(String string) { try { MessageDigest md = MessageDigest.getInstance("MD5"); BigInteger bi = new BigInteger(1, md.digest(string.getBytes())); return bi.toString(16); } catch (NoSuchAlgorithmException ex) { Logger.getLogger(MD5Utils.class .getName()).log(Level.SEVERE, null, ex); return ""; } } 

यह वही है जो मैं यहाँ आया था- एक आसान स्काला फ़ंक्शन जो एमडी 5 हैश की स्ट्रिंग देता है:

 def md5(text: String) : String = java.security.MessageDigest.getInstance("MD5").digest(text.getBytes()).map(0xFF & _).map { "%02x".format(_) }.foldLeft(""){_ + _} 
  import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * MD5 encryption * * @author Hongten * */ public class MD5 { public static void main(String[] args) { System.out.println(MD5.getMD5("123456")); } /** * Use md5 encoded code value * * @param sInput * clearly * @ return md5 encrypted password */ public static String getMD5(String sInput) { String algorithm = ""; if (sInput == null) { return "null"; } try { algorithm = System.getProperty("MD5.algorithm", "MD5"); } catch (SecurityException se) { } MessageDigest md = null; try { md = MessageDigest.getInstance(algorithm); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } byte buffer[] = sInput.getBytes(); for (int count = 0; count < sInput.length(); count++) { md.update(buffer, 0, count); } byte bDigest[] = md.digest(); BigInteger bi = new BigInteger(bDigest); return (bi.toString(16)); } } 

उस बारे में कोडिंगकिट पर एक लेख है देखें: http://codingkit.com/a/JAVA/2013/1020/2216.html

 private String hashuj(String dane) throws ServletException{ try { MessageDigest m = MessageDigest.getInstance("MD5"); byte[] bufor = dane.getBytes(); m.update(bufor,0,bufor.length); BigInteger hash = new BigInteger(1,m.dige`enter code here`st()); return String.format("%1$032X", hash); } catch (NoSuchAlgorithmException nsae) { throw new ServletException("Algorytm szyfrowania nie jest obsługiwany!"); } } 

मैंने ऐसा किया था … ठीक से काम करने लगता है – मुझे यकीन है कि कोई भी गलतियों को इंगित करेगा …

 public final class MD5 { public enum SaltOption { BEFORE, AFTER, BOTH, NONE; } private static final String ALG = "MD5"; //For conversion to 2-char hex private static final char[] digits = { '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i' , 'j' , 'k' , 'l' , 'm' , 'n' , 'o' , 'p' , 'q' , 'r' , 's' , 't' , 'u' , 'v' , 'w' , 'x' , 'y' , 'z' }; private SaltOption opt; /** * Added the SaltOption constructor since everybody * has their own standards when it comes to salting * hashes. * * This gives the developer the option... * * @param option The salt option to use, BEFORE, AFTER, BOTH or NONE. */ public MD5(final SaltOption option) { //TODO: Add Char Encoding options too... I was too lazy! this.opt = option; } /** * * Returns the salted MD5 checksum of the text passed in as an argument. * * If the salt is an empty byte array - no salt is applied. * * @param txt The text to run through the MD5 algorithm. * @param salt The salt value in bytes. * @return The salted MD5 checksum as a <code>byte[]</code> * @throws NoSuchAlgorithmException */ private byte[] createChecksum(final String txt, final byte[] salt) throws NoSuchAlgorithmException { final MessageDigest complete = MessageDigest.getInstance(ALG); if(opt.equals(SaltOption.BEFORE) || opt.equals(SaltOption.BOTH)) { complete.update(salt); } complete.update(txt.getBytes()); if(opt.equals(SaltOption.AFTER) || opt.equals(SaltOption.BOTH)) { complete.update(salt); } return complete.digest(); } /** * * Returns the salted MD5 checksum of the file passed in as an argument. * * If the salt is an empty byte array - no salt is applied. * * @param fle The file to run through the MD5 algorithm. * @param salt The salt value in bytes. * @return The salted MD5 checksum as a <code>byte[]</code> * @throws IOException * @throws NoSuchAlgorithmException */ private byte[] createChecksum(final File fle, final byte[] salt) throws IOException, NoSuchAlgorithmException { final byte[] buffer = new byte[1024]; final MessageDigest complete = MessageDigest.getInstance(ALG); if(opt.equals(SaltOption.BEFORE) || opt.equals(SaltOption.BOTH)) { complete.update(salt); } int numRead; InputStream fis = null; try { fis = new FileInputStream(fle); do { numRead = fis.read(buffer); if (numRead > 0) { complete.update(buffer, 0, numRead); } } while (numRead != -1); } finally { if (fis != null) { fis.close(); } } if(opt.equals(SaltOption.AFTER) || opt.equals(SaltOption.BOTH)) { complete.update(salt); } return complete.digest(); } /** * * Efficiently converts a byte array to its 2 char per byte hex equivalent. * * This was adapted from JDK code in the Integer class, I just didn't like * having to use substrings once I got the result... * * @param b The byte array to convert * @return The converted String, 2 chars per byte... */ private String convertToHex(final byte[] b) { int x; int charPos; int radix; int mask; final char[] buf = new char[32]; final char[] tmp = new char[3]; final StringBuilder md5 = new StringBuilder(); for (int i = 0; i < b.length; i++) { x = (b[i] & 0xFF) | 0x100; charPos = 32; radix = 1 << 4; mask = radix - 1; do { buf[--charPos] = digits[x & mask]; x >>>= 4; } while (x != 0); System.arraycopy(buf, charPos, tmp, 0, (32 - charPos)); md5.append(Arrays.copyOfRange(tmp, 1, 3)); } return md5.toString(); } /** * * Returns the salted MD5 checksum of the file passed in as an argument. * * @param fle The file you want want to run through the MD5 algorithm. * @param salt The salt value in bytes * @return The salted MD5 checksum as a 2 char per byte HEX <code>String</code> * @throws NoSuchAlgorithmException * @throws IOException */ public String getMD5Checksum(final File fle, final byte[] salt) throws NoSuchAlgorithmException, IOException { return convertToHex(createChecksum(fle, salt)); } /** * * Returns the MD5 checksum of the file passed in as an argument. * * @param fle The file you want want to run through the MD5 algorithm. * @return The MD5 checksum as a 2 char per byte HEX <code>String</code> * @throws NoSuchAlgorithmException * @throws IOException */ public String getMD5Checksum(final File fle) throws NoSuchAlgorithmException, IOException { return convertToHex(createChecksum(fle, new byte[0])); } /** * * Returns the salted MD5 checksum of the text passed in as an argument. * * @param txt The text you want want to run through the MD5 algorithm. * @param salt The salt value in bytes. * @return The salted MD5 checksum as a 2 char per byte HEX <code>String</code> * @throws NoSuchAlgorithmException * @throws IOException */ public String getMD5Checksum(final String txt, final byte[] salt) throws NoSuchAlgorithmException { return convertToHex(createChecksum(txt, salt)); } /** * * Returns the MD5 checksum of the text passed in as an argument. * * @param txt The text you want want to run through the MD5 algorithm. * @return The MD5 checksum as a 2 char per byte HEX <code>String</code> * @throws NoSuchAlgorithmException * @throws IOException */ public String getMD5Checksum(final String txt) throws NoSuchAlgorithmException { return convertToHex(createChecksum(txt, new byte[0])); } }