मैं एन्क्रिप्शन के लिए लगभग नया हूं।डिक्रिप्टिंग त्रुटि: "कोई iv सेट जब कोई अपेक्षित"
मैं बाइट्स की एक सरणी डिक्रिप्ट करने के लिए कोशिश कर रहा हूँ, और जब मैं चतुर्थ प्रदान कर रहा हूँ मैं एक अपवाद हो रही है: InvalidAlgorithmParameterException (कोई iv सेट जब एक उम्मीद)।
यहाँ मेरी कोड है (iv 16 बाइट्स जो रिक्त नहीं है की एक सरणी है और जब एन्क्रिप्ट करने के लिए इस्तेमाल किया मान होते हैं):
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, encriptionKey,new IvParameterSpec(iv));
सिफर रहा चतुर्थ निर्दिष्ट नहीं करते हैं ठीक से प्रारंभ हो जाता है :
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, encriptionKey);
एक जवाब मैं JCEStreamCipher (here) किस संस्करण का उपयोग कर रहा हूँ, लेकिन के अनुरूप नहीं हो सकता है के एक कार्यान्वयन मिला खोजने के लिए कोशिश कर रहा है कुछ कोड है कि मुझे बात मैं यह correc समझ नहीं कर रहा हूँ बनाता है tly।
if ((ivLength != 0) && !(param instanceof ParametersWithIV))
{
SecureRandom ivRandom = random;
if (ivRandom == null)
{
ivRandom = new SecureRandom();
}
if ((opmode == Cipher.ENCRYPT_MODE) || (opmode == Cipher.WRAP_MODE))
{
byte[] iv = new byte[ivLength];
ivRandom.nextBytes(iv);
param = new ParametersWithIV(param, iv);
ivParam = (ParametersWithIV)param;
}
else
{
throw new InvalidAlgorithmParameterException("no IV set when one expected");
}
}
ऐसा लगता है कि मैं एक चतुर्थ जब decrypting प्रदान नहीं कर सकते, लेकिन यह मेरे लिए बहुत ज्यादा समझ में आता है नहीं करता है:
कोड यह रहा।
किसी भी मदद की सराहना की जाएगी।
बहुत बहुत शुक्रिया, रिचर्ड।
क्षमा करें, लेकिन मुझे आपकी समस्या वास्तव में समझ में नहीं आती है। हो सकता है कि आपको JCEStreamCipher के बजाय उस कोड को बेहतर ढंग से पोस्ट करना चाहिए (दो पंक्तियों से अधिक)। – Robert
आप कहते हैं, "ऐसा लगता है कि मैं एक चौथाई प्रदान नहीं कर सकता जब डिक्रिप्टिंग" क्यों नहीं? सामान्य विधि IV को सिफरटेक्स्ट के सामने तक प्रीपेड करना और उन्हें एक साथ प्रसारित करना है। रिसीवर शेष संदेश को डिक्रिप्ट करने के लिए IV के रूप में पहले 16 बाइट्स का उपयोग करता है। – rossum
इस तरह मैं इसे कर रहा हूं, लेकिन मुझे डीक्रीप्टर को IV प्रदान करते समय अपवाद मिला, जो मुझे परेशान कर रहा था। कुंजी बनाने के दौरान मुझे एक त्रुटि हुई (केवल उत्तर पोस्ट किया गया)। – richardtz