मैं एन्क्रिप्शन और डिक्रिप्शन उछाल वाले महल के साथ एईएस एल्गोरिथ्म का उपयोग कर रही हूँजे 2 एमई एईएस डिक्रिप्शन त्रुटि (org.bouncycastle.crypto.InvalidCipherTextException: पैड ब्लॉक भ्रष्ट)
मेरे एन्क्रिप्शन और डिक्रिप्शन ठीक काम करता है, लेकिन यह मुझे त्रुटि जब मेरे सादे देता है पाठ का आकार बड़ा
है यहां तक कि कभी कभी यह गैर decrypted डेटा
public static boolean setEncryptionKey(String keyText)
{
byte[] keyBytes = keyText.getBytes();
key = new KeyParameter(keyBytes);
engine = new AESFastEngine();
cipher = new PaddedBufferedBlockCipher(engine);
return true;
}
एन्क्रिप्शन दे रहा है:
public static String encryptString(String plainText)
{
byte[] plainArray = plainText.getBytes();
cipher.init(true, key);
byte[] cipherBytes = new byte[cipher.getOutputSize(plainArray.length)];
int cipherLength = cipher.processBytes(plainArray, 0, plainArray.length, cipherBytes, 0);
cipher.doFinal(cipherBytes, cipherLength);
String cipherString = new String(cipherBytes);
return cipherString;
}
डिक्रिप्शन:
public static String decryptString(String encryptedText)
{
byte[] cipherBytes = encryptedText.getBytes();
cipher.init(false, key);
byte[] decryptedBytes = new byte[cipher.getOutputSize(cipherBytes.length)];
int decryptedLength = cipher.processBytes(cipherBytes, 0, cipherBytes.length, decryptedBytes, 0);
cipher.doFinal(decryptedBytes, decryptedLength);
String decryptedString = new String(decryptedBytes);
int index = decryptedString.indexOf("\u0000");
if (index >= 0)
{
decryptedString = decryptedString.substring(0, index);
}
return decryptedString;
}
यह डिक्रिप्शन दे रहा है मुझे निम्न त्रुटि
org.bouncycastle.crypto.InvalidCipherTextException: pad block corrupted
at org.bouncycastle.crypto.paddings.PKCS7Padding.padCount(+30)
at org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher.doFinal(+190)
at com.NewCrypto.decryptString(NewCrypto.java:103)
at com.New_Midlet.startApp(New_Midlet.java:23)
at javax.microedition.midlet.MIDletProxy.startApp(MIDletProxy.java:44)
at com.sun.midp.midlet.Scheduler.schedule(Scheduler.java:375)
at com.sun.midp.main.Main.runLocalClass(Main.java:477)
at com.sun.midp.main.Main.main(+80)
क्या समस्या हो सकती है?
कोई भी बेस 64 कोडर जो अभी भी वर्णों के बजाय बाइट्स आउटपुट करता है, मेरी राय में थोड़ा मूर्खतापूर्ण है। जब मैं किसी को यूटीएफ -16 एक्सएमएल फ़ाइल में स्ट्रीम करने की कोशिश करता हूं तो मैं पहले ही डरावनी देख सकता हूं। साथ ही, यह डिफ़ॉल्ट 64 की तुलना में बेस 64 के किसी अन्य रूप का समर्थन नहीं करता है। एमएमएम, शायद मुझे अपना एन्कोडर भी उपलब्ध कराया जाना चाहिए। –
@owlstead: मैं सहमत हूं। हार्डर कोडेक तारों को आउटपुट करेगा और साथ ही बेवकूफ अपाचे कॉमन्स शैली का समर्थन करेगा। –