दिलचस्प पोस्ट
1/0 कानूनी जावा अभिव्यक्ति क्या है? मामले में असंवेदनशील xpath php में खोज सी # के बराबर ब्लॉक के साथ? विंडोज एसडीके 7.1 के साथ Matlab 2012a एनजीएन प्रॉक्सी अमेज़ॅन एस 3 संसाधन दो पांडा डेटाफ्रेम में अंतर में आउटपुटिंग – अंतर हाइलाइटिंग फ़ाइल के साथ स्थानीय रूप से भरी हुई मोबाइल वेबवियोज़ से सीओआरएस कुकी क्रेडेंशियल: सत्यापन कैसे दबाए बटन पर निर्भर करते हैं? Angular.js के माध्यम से सत्र को बनाए रखना MySQL पूर्ण जुड़ें? टंकण दशमलव संख्या नहीं राउंड ऑफ कार्य <T> और कार्य <T> के बीच में अंतर क्या है? परिणाम? वाम-रैखिक और राइट-रैखिक ग्रामर्स क्या इसका उपयोग करने के लिए सुरक्षित है KindOfClass: प्रकार निर्धारित करने के लिए एक NSString आवृत्ति के विरुद्ध? TWINControl की संरक्षित इवेंट का उपयोग करना

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

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

Solutions Collecting From Web of "जावा में 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)); 

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