दिलचस्प पोस्ट
IPhone sdk में textField पर ईमेल सत्यापन एकल ऑब्जेक्ट ऑब्जेक्ट ओरिएंटेड क्यों हैं? TableView सेल पुन: उपयोग और अवांछित चेकमार्क – यह मुझे मार रहा है स्कला में शून्य / कुछ नहीं / इकाई का उपयोग पायथन 3 में हेक्स स्ट्रिंग में बाइट्स कन्वर्ट करने का सही तरीका क्या है? जावा में एक यूआरएल से XML प्रतिक्रिया कैसे पढ़ें? मैं एक स्थैतिक मानचित्र कैसे आरंभ करूं? कंटेट करने योग्य डिवा में कैरेट में html डालें सी और सी ++ में यूनियनों का उद्देश्य पता लगाएँ कि डिवाइस आईओएस है मुझे एक Xcode कार्यक्षेत्र में परियोजनाओं में निर्भरता कैसे प्रबंधित करनी चाहिए? GC का उपयोग करने के बारे में क्या गलत है। संकलक ()? UITableView आईओएस 7 में ऑफ़सेट के साथ शुरू हो रहा है एसएसआरएस से निर्यात किए गए पीडीएफ़ में रिक्त पृष्ठों से छुटकारा पाने के तरीके किसी एकल आकृति में विभिन्न भूखंडों के लिए अलग-अलग रंग की रेखाएं कैसे प्राप्त करें?

जावा में SHA-256 के माध्यम से हैश स्ट्रिंग

यहाँ पर यहां तक ​​कि सामान्य रूप से इंटरनेट के साथ, मैंने उछाल वाले कैसल पाया है I मैं जावा में एक स्ट्रिंग के SHA-256 हैश उत्पन्न करने के लिए उछाल वाले कैसल (या कुछ अन्य स्वतंत्र रूप से उपलब्ध उपयोगिता) का उपयोग करना चाहता हूं। उनके प्रलेखन को देखकर मुझे लगता है कि मैं क्या करना चाहता हूं, इसके अच्छे उदाहरण नहीं मिल पाए। क्या कोई यहाँ मेरी मदद कर सकता है?

वेब के समाधान से एकत्रित समाधान "जावा में SHA-256 के माध्यम से हैश स्ट्रिंग"

एक स्ट्रिंग हैश करने के लिए, अंतर्निहित MessageDigest वर्ग का उपयोग करें:

import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.nio.charset.StandardCharsets; import java.math.BigInteger; public class CryptoHash { public static void main( String[] args ) throws NoSuchAlgorithmException { MessageDigest md = MessageDigest.getInstance( "SHA-256" ); String text = "Text to hash, cryptographically."; // Change this to UTF-16 if needed md.update( text.getBytes( StandardCharsets.UTF_8 ) ); byte[] digest = md.digest(); String hex = String.format( "%064x", new BigInteger( 1, digest ) ); System.out.println( hex ); } } 

ऊपर स्निपेट में, digest में हैश स्ट्रिंग है और hex में हेक्साडेसिमल एएससीआईआई स्ट्रिंग है जिसमें बाएं शून्य पैडिंग है।

यह पहले से ही रनटाइम लिब्स में कार्यान्वित हुआ है।

 public static String calc(InputStream is) { String output; int read; byte[] buffer = new byte[8192]; try { MessageDigest digest = MessageDigest.getInstance("SHA-256"); while ((read = is.read(buffer)) > 0) { digest.update(buffer, 0, read); } byte[] hash = digest.digest(); BigInteger bigInt = new BigInteger(1, hash); output = bigInt.toString(16); while ( output.length() < 32 ) { output = "0"+output; } } catch (Exception e) { e.printStackTrace(System.err); return null; } return output; } 

जेईई 6 + पर्यावरण में एक भी जेएएबीबी डाटाटाइज कनान्रॉंटर का इस्तेमाल कर सकता है:

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

आपको जरूरी नहीं कि बाउन्सी कैस्टल लाइब्रेरी की आवश्यकता हो। Integer.toHexString फ़ंक्शन का उपयोग करते हुए निम्न कोड दिखाता है

 public static String sha256(String base) { try{ MessageDigest digest = MessageDigest.getInstance("SHA-256"); byte[] hash = digest.digest(base.getBytes("UTF-8")); StringBuffer hexString = new StringBuffer(); for (int i = 0; i < hash.length; i++) { String hex = Integer.toHexString(0xff & hash[i]); if(hex.length() == 1) hexString.append('0'); hexString.append(hex); } return hexString.toString(); } catch(Exception ex){ throw new RuntimeException(ex); } } 

इस पोस्ट से उपयोगकर्ता 1452273 के लिए विशेष धन्यवाद: जावा में शास 256 के साथ कुछ स्ट्रिंग को कैसे हैश करना है?

अच्छा काम करते रहें !

किसी भी जेसीएस प्रदाता के साथ हैशोड्स का उपयोग करते समय आप पहले एल्गोरिथ्म का एक उदाहरण प्राप्त करने का प्रयास करते हैं, फिर उस डेटा के साथ अपडेट करें जिसे आप धोया जाना चाहते हैं और जब आप समाप्त कर देते हैं, तो हैश वैल्यू प्राप्त करने के लिए डायजेस्ट पर कॉल करें।

 MessageDigest sha = MessageDigest.getInstance("SHA-256"); sha.update(in.getBytes()); byte[] digest = sha.digest(); 

आप अपनी आवश्यकताओं के अनुसार बेस 64 या हेक्स एन्कोडेड संस्करण प्राप्त करने के लिए डायजेस्ट का उपयोग कर सकते हैं

जावा 8: बेस 64 उपलब्ध है:

  MessageDigest md = MessageDigest.getInstance( "SHA-512" ); md.update( inbytes ); byte[] aMessageDigest = md.digest(); String outEncoded = Base64.getEncoder().encodeToString( aMessageDigest ); return( outEncoded ); 

मुझे लगता है कि आप SHA-256 के बिना अपेक्षाकृत पुराने जावा संस्करण का उपयोग कर रहे हैं इसलिए आपको अपने जावा संस्करण में पहले से प्रदान किए गए 'सुरक्षा प्रदाता' के लिए बाउन्सी कैस्टल प्रदाता को जोड़ना होगा।

  // NEEDED if you are using a Java version without SHA-256 Security.addProvider(new BouncyCastleProvider()); // then go as usual MessageDigest md = MessageDigest.getInstance("SHA-256"); String text = "my string..."; md.update(text.getBytes("UTF-8")); // or UTF-16 if needed byte[] digest = md.digest(); 
 return new String(Hex.encode(digest)); 

यह निम्नलिखित पैकेज के साथ "org.bouncycastle.util.encoders.Hex" के साथ काम करेगा

 return new String(Hex.encode(digest)); 

इसकी बाउंसीकासल जार में