Расшифровка BouncyCastle работает, но не шифрование?

Я получаю зашифрованную строку от внешней службы, которую мне нужно расшифровать, а затем повторно зашифровать с помощью BouncyCastle. API.

Мне удалось заставить расшифровку работать нормально, но шифрование, похоже, не работает. Когда я пытаюсь расшифровать строку, сгенерированную моим методом шифрования, я получаю InvalidCipherTextException с сообщением «неизвестный тип блока».

Это мой код расшифровки, который успешно расшифровывает текст из службы, с которой я взаимодействую:

string Decrypt(string value) 
{
    string Signature = "My_Signature";
    RsaKeyParameters keyParams = (RsaKeyParameters)PublicKeyFactory.CreateKey(Convert.FromBase64String(Signature));
    IBufferedCipher cipher = CipherUtilities.GetCipher("RSA/NONE/PKCS1Padding");
    cipher.Init(false, keyParams);

    byte[] secretBytes = Convert.FromBase64String(value);
    byte[] decrypted = cipher.DoFinal(secretBytes);

    return Encoding.Default.GetString(decrypted);
}

Это мой метод шифрования, который, похоже, не генерирует зашифрованную строку, которую может обработать мой метод дешифрования:

string Encrypt(string value)
{
    string Signature = "My_Signature";
    RsaKeyParameters keyParams = (RsaKeyParameters)PublicKeyFactory.CreateKey(Convert.FromBase64String(Signature));
    IBufferedCipher cipher = CipherUtilities.GetCipher("RSA/NONE/PKCS1Padding");
    cipher.Init(true, keyParams);

    byte[] secretBytes = Encoding.Default.GetBytes(value);
    byte[] encrypted = cipher.DoFinal(secretBytes);

    return Convert.ToBase64String(encrypted);
}

Я не совсем уверен, чего мне не хватает, чтобы сделать эту работу. Есть ли что-то очевидное, что мне здесь не хватает?


person abc    schedule 10.09.2010    source источник


Ответы (1)


Я предполагаю, что ваша Signature-строка на самом деле содержит base64-кодировку открытого ключа?

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

person Rasmus Faber    schedule 10.09.2010