मैं एक 16 बाइट ब्लॉक आकार के साथ एईएस सिफर का उपयोग कर रहा हूं।जावा सिफर - एईएस पैडिंग समस्या
यदि मैं 16 बाइट स्ट्रिंग को आज़माता और एन्क्रिप्ट करता हूं तो मुझे कोई समस्या नहीं है, लेकिन 16 की एक से अधिक की कोई अन्य लंबाई अपवाद फेंक रही है।
मुझे 3-डीईएस के साथ पता है, आप एल्गोरिदम के हिस्से के रूप में एक पैडिंग प्रकार निर्दिष्ट कर सकते हैं और इसे कोई अतिरिक्त काम (जैसे डीईएस/सीबीसी/पीकेसीएस 5 पैडिंग) के साथ संभाला जाता है, लेकिन क्या एईएस के साथ इसे निर्दिष्ट करने का कोई तरीका है?
या क्या मुझे 16 से अधिक के लिए मैन्युअल रूप से पैट पैड करने की आवश्यकता है, और फिर जब मैं डिक्रिप्ट करता हूं तो उन्हें पट्टी करें? यहां एक संक्षिप्त कोड नमूना है।
encrypt = Cipher.getInstance("AES", provider);
encrypt.init(Cipher.ENCRYPT_MODE, key) ;
byte[] encrypted = encrypt.doFinal(plainTxt.getBytes()) ;
किसी भी और सभी उत्तरों की सराहना की!
अग्रिम धन्यवाद, Ciarán
पैडेंटिक टिप्पणी: एईएस की परिभाषा के अनुसार केवल 16 बाइट ब्लॉजिज़ है। रिजेंडेल (मूल नाम और विनिर्देश) में 16,24 और 32 बाइट्स का अवरोध था, लेकिन एईएस में उपयोग के लिए केवल 16 बाइट ब्लॉक की अनुमति है। रिजेंडेल ने 128, 160, 1 9 2, 224, 256 की चाबी का समर्थन किया, लेकिन केवल 128, 1 9 2 और 256 एईएस में समर्थित हैं। –