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(..)).

Другие вопросы по тегам