मेरे पास पीजीपी डिक्रिप्शन के लिए बाउंसी कैसल का उपयोग करने वाला एक एप्लीकेशन है जो पिछले 8 महीनों के लिए किसी भी मुद्दे के बिना चलाया गया है, और पिछले 2 दिनों में अचानक एक समस्या आई है जहां GetDataStream विधि अपवाद फेंक रहा है:बाउंसी कैसल पीजीपी डिक्रिप्शन इश्यू
अपवाद संदेश: "त्रुटि असममित सिफर सेटिंग"।
आंतरिक अपवाद संदेश: "आरएसए कुंजी नहीं"।
private static PgpObjectFactory getClearDataStream(PgpPrivateKey privateKey, PgpPublicKeyEncryptedData publicKeyED)
{
// Exception throws here.
Stream clearStream = publicKeyED.GetDataStream(privateKey);
PgpObjectFactory clearFactory = new PgpObjectFactory(clearStream);
return clearFactory;
}
कुंजी समाप्त नहीं हुआ है, यह कोई समाप्ति दिनांक होता है:
मैं आवेदन करने के लिए किसी भी परिवर्तन नहीं किया है, मैं कुंजी छुआ है, तो मैं समझ में नहीं आता कि नीली रंग से कोई समस्या क्यों आई है। कोई विचार? मैं उसी कुंजी का उपयोग करके क्लोपेट्रा का उपयोग करके फ़ाइलों को मैन्युअल रूप से डिक्रिप्ट भी कर सकता हूं जो मैं एप्लिकेशन में लोड करता हूं।
अद्यतन 1 - मैं OpenPGP Library for .NET के लिए नि: शुल्क परीक्षण है, जो भी BouncyCastle उपयोग करने के लिए लग रहा है डाउनलोड किया है, और मैं एक ही कुंजी का उपयोग करके फ़ाइलें decrypting कोई मुद्दा नहीं है। किसी कारण से, बाउंसीकास्टल का उपयोग करके डिक्रिप्शन के कार्यान्वयन ने कई महीनों तक काम करना बंद कर दिया है क्योंकि मैं अभी तक पहचान नहीं पाया है।
अद्यतन 2 - मैं पिछले हफ्ते कि काम से फाइल खींच लिया, और मैं यह भी आदेश है कि मैं के माध्यम से कदम कर सकते हैं और डिबग देखने के लिए जहां अपवाद फेंक रहा है और कैसे चर अलग में BouncyCastle के स्रोत कोड डाउनलोड किया है एक फ़ाइल जो काम करता है और एक फ़ाइल जो काम नहीं करती है के बीच। अपवाद PgpPublicKeyEncryptedData वर्ग के GetDataStream विधि की शुरुआत में फेंक दिया जा रहा है:
byte[] plain = fetchSymmetricKeyData(privKey);
जब मैं इस विधि में कदम, फ़ाइलों है कि मैं किसी भी समस्या के बिना डिक्रिप्ट कर सकते हैं के लिए, मुझे लगता है कि keyData.Algorithm ध्यान दिया है चर को "ElGamalEncrypt" पर सेट किया गया है, जबकि अपवाद फेंकने वाली फ़ाइलों के लिए, फ़ाइल keyData.Algortithm को "सामान्य" पर सेट किया गया है। ये अलग क्यों होंगे? क्या कंपनी ने मुझे फाइलें भेजकर अपनी एन्क्रिप्शन विधि बदल दी? और क्या यह एन्क्रिप्शन विधि BouncyCastle द्वारा उचित रूप से समर्थित नहीं है?
private byte[] fetchSymmetricKeyData(PgpPrivateKey privKey)
{
IBufferedCipher c1 = GetKeyCipher(keyData.Algorithm);
try
{
c1.Init(false, privKey.Key);
}
catch (InvalidKeyException e)
{
throw new PgpException("error setting asymmetric cipher", e);
}
यह भी सुनिश्चित नहीं है कि यह संबंधित है, तो हमारी कुंजी का प्रमाणपत्र प्रकार डीएसए है।
अद्यतन 3 - मैं कैसे अभी तक दिए गए वर्तमान चाबियों का हल निकालने के लिए यह पता लगाने में असमर्थ रहा है। मैंने कल नई कुंजी (प्रकार डीएसए) उत्पन्न की, और नई चाबियों के साथ समस्या हल हो गई है।
अपडेट 4 - यह समस्या अभी मेरे पास आ गई है, जो कि मेरे पिछले अपडेट में काम करने वाली नई कुंजी के साथ है। एक बार फिर, PgpPublicKeyEncryptedData कक्षा के भीतर keyData.Algorithm अब "ElGamalEncrypt" के बजाय "सामान्य" को देखा जा रहा है। एल्गोरिदम संपत्ति क्यों बदलेगी? क्या फ़ाइल कुछ बदल रहा है फ़ाइल को एन्क्रिप्ट कर रहा है?
बिटरोट। xxxxxxx – Joshua
शायद आरएसए कुंजी धारण करने वाला प्रमाण पत्र समाप्त हो गया है? क्या आप इसे देख सकते हैं? – Oleksi
मैंने पहले इसे चेक किया है, और बस एक स्क्रीनशॉट जोड़ा है, हमारी कुंजी की समाप्ति तिथि नहीं है। इसके अतिरिक्त, मैं एक ही चाबी का उपयोग कर क्लोपेट्रा जैसे उपयोगिता का उपयोग कर फ़ाइलों को मैन्युअल रूप से डिक्रिप्ट कर सकता हूं। तो चाबियाँ अच्छी हैं। – mservidio