ekterya.com

जावा के साथ Base64 में कोड कैसे करें

Base64 एन्कोड करने का एक तरीका है, आउटपुट के 4 बाइट्स में इनपुट के हर 3 बाइट्स - यह ईमेल द्वारा भेजने के लिए छवियों या ऑडियो फ़ाइलों को सांकेतिकृत करने के लिए बहुत आम तौर पर उपयोग किया जाता है (हालांकि 7-बिट फ़ाइलों के संचरण के दिन समाप्त होने वाले हैं) , और एक वेबसाइट (उपयोगकर्ता और पासवर्ड) में लॉग इन करने के तरीके को छिपाने के लिए "ताक-झांक"। यहां जावा में बेस 64 एन्कोडर प्रोग्राम करने का एक उदाहरण है, कई प्लेटफार्मों के लिए एक प्रोग्रामिंग भाषा।

चरणों

जावा चरण 1 के साथ एक स्ट्रिंग बेस64 के साथ शीर्षक छवि
1

Video: साथ जावा 7 वीडियो बेस 64 उदाहरण

सूचना और फ़ाइल नाम दर्ज करें
  • जावा चरण 2 के साथ एक स्ट्रिंग को बेस 64 के साथ छवि का शीर्षक
    2
    अपने पसंदीदा संपादक को शुरू करें, जैसे कि "नोटपैड" या "vi", और डिफ़ॉल्ट कोड दर्ज करें, जैसे वर्गों और स्थिरांक की घोषणा। फ़ाइल को Base64.java के रूप में नाम दें
  • 3
    ये स्थिर मूल्य विशिष्ट हैं, जैसा कि लेख में स्थापित है, प्रासंगिक आरएफसी में (अंग्रेजी में अपने परिवर्णी शब्द के लिए दूरदराज के कार्यों के लिए कॉल)। यह आमतौर पर एक अच्छा अभ्यास है कोड शुरू करने से पहले सभी आरएफसी पढ़ें।
    सार्वजनिक कक्षा बेस64 {निजी स्थिर अंत स्ट्रिंग base64code = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"+ "abcdefghijklmnopqrstuvwxyz" + "0123456789" + "+ /"- निजी स्थिर अंतिम अंतर splitLinesAt = 76-
  • 4
    बाइट्स के रूप में वर्णों का इलाज करने का मतलब है कि वर्ण "multibyte", जापानी या चीनी की तरह, वे सही ढंग से इनकोड नहीं होंगे। इसलिए, हमें कोडिंग शुरू करने से पहले हमें यूनिकोड वर्णों को बाइट में कनवर्ट करने के लिए स्ट्रिंग विधि के getBytes () का उपयोग करना चाहिए। लेकिन, उदाहरण के लिए, यदि आप एक जापानी दस्तावेज़ के साथ काम कर रहे हैं और अमेरिकी Inglés स्थान के लिए सेट कर दिया जाता है, तो आप उत्पादन getBytes () और getBytes के लिए भाषा निर्दिष्ट करना होगा ("UTF-8")।
  • 5
    हम जांच करेंगे कि कितने पैडिंग बाइट आवश्यक हैं। जावा मॉड्यूल ऑपरेटर,%, इस स्थिति में बहुत मदद करता है। हम इस समय जब हम इस में हैं, तब उपस्ट्रेटिन नाम और पैरामीटर घोषित करने जा रहे हैं।
  • 6
    अब हम प्रविष्टि नल पैड बनाने के लिए उस मान का उपयोग करते हैं। ध्यान दें कि यदि पैडिंग की आवश्यकता नहीं है, तो इसे जोड़ना नहीं पड़ता है, क्योंकि हम दूसरी बार मॉड्यूल 3 लेते हैं, 3 को 0 में परिवर्तित करते हैं।
    सार्वजनिक स्थिर बाइट [] ZeroPad (पूर्णांक लंबाई, बाइट [] बाइट्स) {बाइट [] = नए बाइट गद्देदार [लंबाई] - // JVMSystem.arraycopy से शून्य करने के लिए प्रारंभ (बाइट्स, 0, गद्देदार, 0, bytes.length) - रिटर्न पैड-} सार्वजनिक स्टेटिक स्ट्रिंग एन्कोड (स्ट्रिंग स्ट्रिंग) {स्ट्रिंग एन्कोडेड = ""-बाइट [] स्ट्रिंग एरे-कोशिश {stringArray = string.getBytes ("UTF-8") - (- बल्कि कर्कश से // उपयोग डिफ़ॉल्ट स्थान} पूर्णांक paddingCount = (3 - (stringArray.length% 3 अपवाद पर ध्यान नहीं दिया) {stringArray = String.getBytes ())!)% 3 // उपयुक्त एन्कोडिंग स्ट्रिंग} पकड़ का उपयोग stringArray = zeroPad (स्ट्रिंगअरेरे। लैंप + पैडिंगकाउंट, स्ट्रिंग एरे) -
  • जावा चरण 3 में बेस 64 के साथ एक स्ट्रिंग को एन्कोड करें
    7
    अब अगर हमें हमारी चिंता का सामना करना पड़ता है: 24 बिट पूर्णांक में एक बार में 3 बाइट पैक करें, फिर चेन कोड में 6-बिट अनुक्रमित निकालें। ये संख्या जादू नहीं है: 24 को 6 बार 4 बार विभाजित किया जाता है, और 6 बिट्स में 0 से 63 तक के मूल्य शामिल हो सकते हैं, जो कि 64-बाइट श्रृंखला में किसी भी मान को इंडेक्स कर सकता है।



    के लिए (int i = 0- i < stringArray.length- i + = 3) {int j = ((स्ट्रिंग एरेरे [i] & 0xff) << 16) + ((स्ट्रिंगअरेरे [i + 1] & 0xff) << 8) + (स्ट्रिंगअरेरे [i + 2] & 0xff) -इन्कोड = एन्कोडेड + बेस 64 कोड.चार्ट ((जे >> 18) & 0x3f) + base64code.charAt ((जे >> 12) & 0x3f) + base64code.charAt ((जे >> 6) & 0x3f) + base64code.charAt (जे & 0x3f) -}
  • 8
    अंत में, हम आउटपुट को पैक करने के बाद, अधिक स्पष्टता के लिए एक अलग उपदंश का उपयोग करते हुए, संबंधित 76 बाइट सीमाओं में सीआरएलएफ जोड़ते हैं।
    रिटर्न स्प्लिट लाइन्स (एन्कोडेड.substring (0, एन्कोडेड. लैंघ () - पैडिंगकाउंट) +"==".substring (0, पैडिंगकाउंट)) -} सार्वजनिक स्थिर स्ट्रिंग स्प्लिट लाइन्स (स्ट्रिंग स्ट्रिंग) {स्ट्रिंग लाइन = ""-for (int i = 0- i < string.length () - मैं + = splitLinesAt) + = String.substring {लाइनों (i, Math.min (string.length (), मैं splitLinesAt +)) - लाइनों + = " r n r n"-} वापसी लाइन-}
  • 9
    हम चाहें तो, परीक्षण उद्देश्यों के लिए एक मुख्य दिनचर्या जोड़ सकते हैं। यह आम तौर पर सार्वजनिक कोड के लिए आपके कोड को प्रकाशित करने से पहले एक अच्छा विचार है
    सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] आर्ग्स) {for (int i = 0- i < args.length-i ++) {System.err.println ("एन्कोडिंग "" + आर्ग्स [आई] + """) -सिस्टम.आउट.प्रिंटएलएन (सांकेतिक शब्दों में बदलना (आर्ग्स [i])) -}}
  • 10
    यहाँ समाप्त मॉड्यूल है:

    सार्वजनिक कक्षा बेस64 {निजी स्थिर अंत स्ट्रिंग base64code = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"+ "abcdefghijklmnopqrstuvwxyz" + "0123456789" + "+ /"-private splitLinesAt स्थिर अंतिम पूर्णांक = 76-सार्वजनिक स्थिर बाइट [] ZeroPad (पूर्णांक लंबाई, बाइट [] बाइट्स) {बाइट [] = नए बाइट गद्देदार [लंबाई] - // शून्य करने के लिए JVMSystem.arraycopy द्वारा प्रारंभ (बाइट्स, 0, गद्देदार, 0, बाइट्स। लांघ) -पेटेड-} सार्वजनिक स्थिर स्ट्रिंग एन्कोडिंग (स्ट्रिंग स्ट्रिंग) {स्ट्रिंग एन्कोडेड = ""-बाइट [] स्ट्रिंग एरे-कोशिश {stringArray = string.getBytes ("UTF-8") - उचित उपयोग एन्कोडिंग // स्ट्रिंग} पकड़ (अपवाद पर ध्यान नहीं दिया) {stringArray = String.getBytes () - // उपयोग डिफ़ॉल्ट स्थान के बजाय मरना} // कितने बाइट्स गद्दी outputint paddingCount = (3 में जोड़ने के लिए निर्धारित - बारे में // प्रक्रिया एक समय में 3 बाइट्स, चार उत्पादन बाइट्स मंथन // चिंता - (stringArray.length% 3))% 3 - // किसी भी आवश्यक करने के लिए गद्दी जोड़ने inputstringArray = ZeroPad (stringArray.length + paddingCount, stringArray) सीआरएलएफ़ प्रविष्टि के लिए बाद में (इंट आई = 0- i < stringArray.length- i + = 3) {int j = ((स्ट्रिंग एरेरे [i] & 0xff) << 16) + ((स्ट्रिंगअरेरे [i + 1] & 0xff) << 8) + (स्ट्रिंगअरेरे [i + 2] & 0xff) -इन्कोड = एन्कोडेड + बेस 64 कोड.चार्ट ((जे >> 18) & 0x3f) + base64code.charAt ((जे >> 12) & 0x3f) + base64code.charAt ((जे >> 6) & 0x3f) + base64code.charAt (जे & 0x3f) -} // के साथ एन्कोडेड पैडिंग नल की जगह "="रिटर्न स्प्लिट लाइन्स (एन्कोडेड.substring (0, एन्कोडेड.लैम्थ () -पैडिंगकाउंट) + "==".substring (0, पैडिंगकाउंट)) -} सार्वजनिक स्थिर स्ट्रिंग स्प्लिट लाइन्स (स्ट्रिंग स्ट्रिंग) {स्ट्रिंग लाइन = ""-for (int i = 0- i < string.length () - मैं + = splitLinesAt) + = String.substring {लाइनों (i, Math.min (string.length (), मैं splitLinesAt +)) - लाइनों + = " r n r n"-} वापसी लाइन-} सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] args) {for (int i = 0- i < args.length-i ++) {System.err.println ("एन्कोडिंग "" + आर्ग्स [आई] + """) -सिस्टम.आउट.प्रिंटएलएन (एन्कोड (आर्ग्स [i])) -}}}
  • 11
    अब आइये, इसे जॅवैक, जीसीजे, जैक्स का उपयोग करके संकलित करें, या विकिपीडिया लेख हॉब्स का इस्तेमाल करके कोशिश करें-
    $ जीसीजे-सी बेस64.जावा $ जावा बेस 64 "यार, प्रतिष्ठित है न केवल उनकी वजह से है, लेकिन अन्य जानवरों से thissingular जुनून, जो मन की एक वासना है, यही कारण है कि जारी रखा और अथक पीढ़ी ofknowledge में खुशी की aperseverance द्वारा, किसी भी शारीरिक सुख की कमी उग्रता से अधिक से।"
  • 12
    यहां परिणाम है:

    एन्कोडिंग "मैन प्रतिष्ठित, न केवल उनकी वजह से है, लेकिन अन्य जानवरों से एस्टा singularpassion, जो मन की एक वासना है, यही कारण है कि निरंतर और अथक पीढ़ी ofknowledge में खुशी की aperseverance द्वारा, किसी भी शारीरिक सुख की कमी उग्रता से अधिक कर रहा है।"TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4 =
  • 13
    बिल्कुल मेल खाता है! इसका मतलब है कि दो कार्यक्रम गलत हैं, या दोनों अधिक या कम अच्छे हैं। इस बिंदु पर आप विकिपीडिया लेख को फिर से देखना चाहते हैं, और आरएफसी लिंक पढ़ सकते हैं ताकि हम कुछ याद कर रहे हों।
  • युक्तियाँ

    Video: जावा 8 एनकोड डिकोड का उपयोग कैसे करें Base64 के लिए एक छवि

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

    संबद्ध
    © 2021 ekterya.com