BouncyCastle Расшифровка работает, но не шифрование? - PullRequest
1 голос
/ 10 сентября 2010

Я получаю зашифрованную строку из внешней службы, которую мне нужно расшифровать, а затем повторно зашифровать с помощью 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);
}

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

1 Ответ

1 голос
/ 10 сентября 2010

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

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

...