RSA Асимметричное шифрование / дешифрование - какой ключ используется
Когда я создаю открытый / закрытый ключ, используя следующий код:
// Create the CspParameters object and set the key container
// name used to store the RSA key pair.
CspParameters cp = new CspParameters();
cp.KeyContainerName = ContainerName;
// Create a new instance of RSACryptoServiceProvider that accesses
// the key container MyKeyContainerName.
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cp);
Если я тогда позвоню
rsa.Encrypt (....
OR
rsa.Decrypt(..
Как я знаю, какой ключ используется. Используется ли открытый или закрытый ключ в каждом конкретном случае, зависит от приложения. Как я могу определить, что используется?
1 ответ
Шифрование выполняется с помощью открытого ключа, а дешифрование - с помощью закрытого ключа. Таким образом, расшифровать может только владелец личного ключа .
Вы не должны расшифровывать с помощью открытого ключа, и, следовательно, интерфейс не предоставляет вам способ сделать это.
Сигнатуры используют шифрование с использованием закрытого ключа и дешифрование с использованием открытого ключа + некоторую однонаправленную хэш-логику, но в этом случае интерфейс позволяет это только с использованием определенных методов подписи (SignData(..)
& VerifyData(..)
).