Bouncy Castle PGP Проблема с расшифровкой

У меня было приложение, использующее Bouncy Castle для расшифровки PGP, которое без проблем работало в течение последних 8 месяцев или около того, и последние 2 дня неожиданно возникла проблема, когда метод GetDataStream выдает исключение:

Сообщение об исключении: «Ошибка установки асимметричного шифра».

Внутреннее сообщение об исключении: «Не ключ RSA».

private static PgpObjectFactory getClearDataStream(PgpPrivateKey privateKey, PgpPublicKeyEncryptedData publicKeyED)
{
    // Exception throws here.
    Stream clearStream = publicKeyED.GetDataStream(privateKey);

    PgpObjectFactory clearFactory = new PgpObjectFactory(clearStream);
    return clearFactory;
}

Срок действия ключа не истек, срок его действия не истек:

enter image description here

Я не вносил никаких изменений в приложение, я не касался клавиш, поэтому я не совсем понимаю, почему возникла проблема. Есть идеи? Я также могу вручную расшифровать файлы, используя Kleopatra, используя те же ключи, которые я загружаю в приложение.

Update 1 - Я скачал бесплатную пробную версию дляБиблиотека OpenPGP для .NET, который также использует BouncyCastle, и у меня нет проблем с расшифровкой файлов с использованием того же ключа. По какой-то причине моя реализация дешифрования с использованием BouncyCastle, которая работала в течение нескольких месяцев, перестала работать по какой-то причине, которую я пока не смог определить.

Update 2 - Я извлек файлы с прошлой недели, которые работали, и я также загрузил исходный код BouncyCastle, чтобы я мог пройти и отладить, чтобы увидеть, куда выдается исключение и как отличаются переменные между файлом, который работает, и файлом это не работает. Исключение выдается в начале метода GetDataStream класса PgpPublicKeyEncryptedData:

byte[] plain = fetchSymmetricKeyData(privKey);

Когда я вступаю в этот метод, для файлов, которые я могу дешифровать без проблем, я заметил, что для переменной keyData.Algorithm установлено значение «ElGamalEncrypt», тогда как для файлов, которые выдает исключение, устанавливается файл keyData.Algortithm. на "RsaGeneral". Почему они отличаются? Компания, отправляющая мне файлы, изменила метод шифрования? И этот метод шифрования не поддерживается должным образом 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);
    }

Кроме того, не уверен, что это связано, тип сертификата нашего ключа DSA.

enter image description here

Update 3 - Мне пока не удалось выяснить, как решить проблему с учетом текущих ключей. Вчера я сгенерировал новые ключи (типа DSA), и с новыми ключами проблема была решена.

Update 4 - Эта проблема только что возникла снова, с новым ключом, который работал в моем последнем обновлении. Еще раз, keyData.Algorithm в классе PgpPublicKeyEncryptedData просматривается как "RsaGeneral". вместо "ElGamalEncrypt" сейчас. Почему изменится свойство Алгоритма? Человек, шифрующий файл, что-то меняет?

Ответы на вопрос(2)

Ваш ответ на вопрос