को अपग्रेड करते समय हाल ही में बीसी 1.34 से 1.45 तक अपग्रेड किया गया। मैं निम्नलिखित के साथ कुछ पहले से एन्कोड किया गया डेटा डिकोडिंग हूँ:बाउंसीकास्टल एईएस त्रुटि 1.45
javax.crypto.BadPaddingException: pad block corrupted
at org.bouncycastle.jce.provider.JCEBlockCipher.engineDoFinal(JCEBlockCipher.java:715)
at javax.crypto.Cipher.doFinal(Cipher.java:1090)
संपादित करें: इस मुद्दे के बारे में अधिक
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] decrypted = cipher.doFinal(encrypted);
ई.पू. 1.45 का उपयोग करते समय मैं इस अपवाद मिलता है। मैं किसी पासफ़्रेज़ से कच्चे कुंजी उत्पन्न करने के लिए निम्न का उपयोग कर रहा:
KeyGenerator kgen = KeyGenerator.getInstance("AES", "BC");
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG", "Crypto");
sr.setSeed(seed);
kgen.init(128, sr);
SecretKey skey = kgen.generateKey();
byte[] raw = skey.getEncoded();
क्या मैं ने पाया है कि यह ईसा पूर्व 1.34 बनाम 1.45 के लिए दो अलग-अलग मान में जो परिणाम है।
यह भी नहीं BouncyCastle से संबंधित हो सकता है
आप सही हैं। SecureRandom के लिए अनुबंध यह वादा नहीं करता है कि जिस बीज को आप मैन्युअल रूप से आपूर्ति करते हैं वह केवल * बीज * उपयोग करेगा। यह अन्य स्रोतों का उपयोग करेगा, जैसे/dev/linux/lsd पर यादृच्छिक। –
भावी पाठकों के लिए: दूसरे शब्दों में, पीबीकेडीएफ 2 जैसे बदले जाने वाले प्रमुख व्युत्पन्न विधि का उपयोग करें। –