Существует множество тем по шифрованию и расшифровке RSA с использованием BouncyCastle, однако я сталкиваюсь с неожиданным поведением.C# BouncyCastle RSA Шифрование и дешифрование
Я пытаюсь зашифровать 64 байта блокировки данных с использованием секретного ключа размером 64 байт
Я вычисления шифрования RSA, как следующие:
public byte[] Encrypt(byte[] data, AsymmetricKeyParameter key)
{
var engine = new RsaEngine();
engine.Init(true, key);
var blockSize = engine.GetInputBlockSize();
return engine.ProcessBlock(data, 0, blockSize);
}
Я вычислить дешифрования с использованием открытого ключа следующим
public byte[] Decrypt(byte[] data, AsymmetricKeyParameter key)
{
var engine = new RsaEngine();
engine.Init(false, key);
var blockSize = engine.GetInputBlockSize();
return engine.ProcessBlock(data, 0, blockSize);
}
что я вывод, что когда я зашифровать свои данные 64 с помощью 64 байт секретного ключа я получить обратно 64 байт зашифрованного блока данных.
Однако, когда я декодирую массив из 64 байтов с использованием 64-байтового открытого ключа, я возвращаю блок данных размером 62 байта. Что более странно, так это то, что значения, содержащиеся в массиве из 62 байтов, равны значениям исходного массива 64 байта (предварительное шифрование), однако в декодированном массиве отсутствует первый индекс исходных данных и конечный индекс.
Я пробовал использовать разные ключи и разные наборы данных, и то же самое происходит.
Должно быть, я делаю что-то неправильно, но я не вижу этого.
Cheers.
Пожалуйста, не вводите код. Скопируйте и вставьте точный код, так как выше не компилируется. –
Подсказка: Как вы думаете, значение 'engine.GetInputBlockSize();' есть? Вот еще один намек. Значение отличается в зависимости от того, находится ли двигатель RSA в режиме шифрования или режиме дешифрования. –
Вы сделали это до сих пор? Потому что я столкнулся с той же проблемой и, возможно, вам понадобится ваш совет :) – Roylee