का उपयोग कर जावा में बड़ी स्ट्रिंग को एन्क्रिप्ट और डिक्रिप्ट करें मैं पीकेआई को लागू करने की कोशिश कर रहा हूं। मैं बाउंसी महल का उपयोग किये बिना जावा में आरएसए का उपयोग करके बड़ी स्ट्रिंग एन्क्रिप्ट करना चाहता हूं। मुझे जो समस्या हो रही है वह है कि डेटा 117 बाइट से अधिक नहीं होना चाहिए। मैंने समाधान के लिए बैठने की कोशिश की जहां मैं असफल रहा। मैं इस एन्क्रिप्शन में नौसिखिया हूँ। कृपया एक उदाहरण के रूप में एक बड़ी स्ट्रिंग देकर मेरी व्याख्या करें और इसे समझाएं।आरएसए
आरएसए
उत्तर
आप एक समय में लगभग 128 बाइट्स पर एक आरएसए एन्क्रिप्शन डिक्रिप्शन का उपयोग नहीं कर सकते हैं। आपको डेटा को विभाजित करना होगा और इसे लूप में करना होगा जैसा कि आप जाते हैं, स्ट्रिंग/ऐरे को बाइट्स को बहुत अधिक लिखते हैं। यदि आपकी एकमात्र समस्या डेटा का आकार है, तो शायद आपके पास जाने के लिए और कुछ नहीं है। बस डेटा विभाजित।
एक बढ़िया उदाहरण है, संभवतः अधिक है, तो आप के लिए पूर्ण 128 बाइट्स से बड़ा तार के साथ काम: http://coding.westreicher.org/?p=23
आप सामान्य रूप में RSA एन्क्रिप्शन के बारे में अधिक विवरण की जरूरत है:
निम्नलिखित कोड दर्शाता है कि कैसे करने के लिए
// Get an instance of the RSA key generator
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
// Generate the keys — might take sometime on slow computers
KeyPair myPair = kpg.generateKeyPair();
यह आपको एक keypair वस्तु है, जो दो कुंजी रखती है दे देंगे: जावा में कोई RSA कुंजी युग्म उत्पन्न करने के लिए KeyPairGenerator का उपयोग एक निजी और एक publ I C। इन चाबियों का उपयोग करने के लिए, आपको एक सिफर ऑब्जेक्ट बनाना होगा, जिसे नेटवर्क पर समाप्त होने वाले डेटा को एन्क्रिप्ट करने के लिए SealedObject के संयोजन में उपयोग किया जाएगा। यहां बताया गया है कि आप यह कैसे करते हैं:
// Get an instance of the Cipher for RSA encryption/decryption
Cipher c = Cipher.getInstance("RSA");
// Initiate the Cipher, telling it that it is going to Encrypt, giving it the public key
c.init(Cipher.ENCRYPT_MODE, myPair.getPublic());
साइफर शुरू करने के बाद, हम डेटा एन्क्रिप्ट करने के लिए तैयार हैं। चूंकि एन्क्रिप्शन के बाद से परिणामस्वरूप डेटा अधिक समझ नहीं पाएगा यदि आप उन्हें "नग्न" देखते हैं, तो हमें उन्हें किसी अन्य ऑब्जेक्ट में समाहित करना होगा। जावा इसे SealedObject कक्षा द्वारा प्रदान करता है। SealedObjects एन्क्रिप्टेड ऑब्जेक्ट्स के लिए कंटेनर हैं, जो एक सिफर ऑब्जेक्ट की मदद से अपनी सामग्री को एन्क्रिप्ट और डिक्रिप्ट करते हैं।
निम्न उदाहरण से पता चलता है कि कैसे बनाने के लिए और एक SealedObject की सामग्री को एन्क्रिप्ट:
// Create a secret message
String myMessage = new String("Secret Message");
// Encrypt that message using a new SealedObject and the Cipher we created before
SealedObject myEncryptedMessage= new SealedObject(myMessage, c);
जिसके परिणामस्वरूप वस्तु बिना किसी डर के नेटवर्क पर भेजा जा सकता है, क्योंकि यह एन्क्रिप्टेड है। केवल एक जो डेटा को डिक्रिप्ट और प्राप्त कर सकता है, वह है जो निजी कुंजी रखता है। आम तौर पर, यह सर्वर होना चाहिए। संदेश को डिक्रिप्ट करने के लिए, हमें सिफर ऑब्जेक्ट को फिर से शुरू करना होगा, लेकिन इस बार एक अलग मोड के साथ, डिक्रिप्ट करें, और सार्वजनिक कुंजी के बजाय निजी कुंजी का उपयोग करें। , कि सिफ़र डिक्रिप्ट करने के लिए तैयार है
// Get an instance of the Cipher for RSA encryption/decryption
Cipher dec = Cipher.getInstance("RSA");
// Initiate the Cipher, telling it that it is going to Decrypt, giving it the private key
dec.init(Cipher.DECRYPT_MODE, myPair.getPrivate());
अब हम आयोजित डेटा को डिक्रिप्ट करने SealedObject बताना होगा:
इस तरह आप जावा में ऐसा है। जब GetObject पद्धति का उपयोग करके
// Tell the SealedObject we created before to decrypt the data and return it
String message = (String) myEncryptedMessage.getObject(dec);
System.out.println("foo = "+message);
सावधान रहें, क्योंकि यह एक वस्तु है, और नहीं है कि यह वर्ग एन्क्रिप्शन पहले था का एक उदाहरण है (भले ही यह वास्तव में स्ट्रिंग का एक उदाहरण है) का एक उदाहरण देता है, तो आप ' इसे अपने पूर्व रूप में डालना होगा। http://andreas.louca.org/2008/03/20/java-rsa-encryption-an-example/
आरएसए थोक डेटा एन्क्रिप्शन के लिए इरादा नहीं है:
ऊपर से है। इसके बजाय, अपनी "बड़ी स्ट्रिंग" एन्क्रिप्ट करने के लिए एईएस की तरह एक सममित सिफर का उपयोग करें। फिर, आरएसए कुंजी के साथ एईएस के लिए उपयोग की जाने वाली सममित कुंजी को एन्क्रिप्ट करें।
बाउंसीकास्टल ऐसा करने के लिए दो प्रोटोकॉल का समर्थन करता है: एस/एमआईएमई और पीजीपी। सभी समझदार गोपनीयता प्रोटोकॉल इस तरह से प्रमुख परिवहन या कुंजी विनिमय के लिए असममित एल्गोरिदम का उपयोग करते हैं।
आरएसए के साथ एन्क्रिप्टेड संदेश आकार कुंजी के मॉड्यूलस पर निर्भर करता है, संदेश को सुरक्षित रूप से पैड करने के लिए आवश्यक कुछ बाइट्स।
इस तरह हाइब्रिड एन्क्रिप्शन जाने का रास्ता है। – CodesInChaos
प्रासंगिक एपीआई के लिए एक कोड उदाहरण या लिंक चोट नहीं पहुंचाएगा। – CodesInChaos
- 1. आरएसए
- 2. आरएसए
- 3. आरएसए डीईआर
- 4. pycrypto (आरएसए)
- 5. आरएसए एन्क्रिप्शन
- 6. आरएसए एन्क्रिप्ट/डिक्रिप्ट
- 7. आरएसए प्रमाणीकरण प्रबंधक
- 8. आरएसए एन्क्रिप्ट नेट
- 9. आरएसए: विस्तारित यूक्लिडियन एल्गोरिदम
- 10. आरएसए प्राइवेट कुंजी
- 11. आईएसए में आरएसए एन्क्रिप्शन-डिक्रिप्शन
- 12. एंड्रॉइड में स्ट्रिंग आरएसए एन्क्रिप्शन
- 13. आरएसए एन्क्रिप्शन: जावा और एंड्रॉइड
- 14. फ़ाइलों से लोड आरएसए कुंजी
- 15. आरएसए एन्क्रिप्शन: जावा से PHP
- 16. आरएसए हस्ताक्षर और सी #, बाउंसीकास्टल और आयातित आरएसए कुंजी के साथ सत्यापन -
- 17. आरएसए कुंजी fobs कैसे काम करते हैं?
- 18. पोर्टिंग .NET आरएसए एक्सएमएल कुंजी जावा
- 19. सी # आरएसए सार्वजनिक मॉड्यूलस/एक्सपोनेंट? (खराब डेटा)
- 20. ग्रहण/आईबीएम आरएसए तर्कसंगत सॉफ्टवेयर आर्किटेक्ट
- 21. लाउंजेट कैसल आरएसए कीपैयर पीढ़ी लाइटवेट एपीआई
- 22. आरएसए कुंजी जोड़ी उत्पन्न करें और स्ट्रिंग
- 23. openssl आरएसए निजी और सार्वजनिक कुंजी
- 24. क्या क्यूटी समर्थन आरएसए एन्क्रिप्शन करता है?
- 25. आरएसए सार्वजनिक कुंजी से डेटा निकालने
- 26. पीएफएक्स (पीकेसीएस # 12) फ़ाइल से आरएसए प्राइवेट कुंजी बनाना
- 27. आरएसए के साथ एनक्रिप्टिंग एईएस कुंजी सार्वजनिक कुंजी
- 28. एसएसएच बिना आरएसए कुंजी के पाइथन का उपयोग
- 29. क्या आरएसए अधिकतम ब्लॉक आकार एन्कोड करने के लिए?
- 30. मेरा जावा आरएसए एन्क्रिप्शन मुझे अंकगणित अपवाद क्यों देता है?
सुरक्षा, और विशेष रूप से क्रिप्टोग्राफी, ** कठिन ** है। आपको कच्चे क्रिप्टो एपीआई के बजाय मौजूदा उच्च स्तरीय पैकेजों का उपयोग करना चाहिए, या वे कैसे काम करते हैं इसका विवरण सीखना चाहिए। अन्यथा, आप असुरक्षित कोड लिखने की संभावना है। – SLaks
उच्च स्तरीय पैकेज का मतलब है? –
कृपया अपना कोड पोस्ट करें। हम वहां से काम कर सकते हैं। – Frank