Исключение «неверный параметр» при шифровании массива с использованием RSACng 512 + OaepSHA256 - PullRequest
0 голосов
/ 29 апреля 2020

У меня проблемы с использованием RSACng (512) с OaepSHA256 (C#,. NET Framework 4.6.1) - получение System.Security.Cryptography.CryptographicException: «Параметр неверен». при кодировании (любого) байтового массива:

using System.Security.Cryptography;
...

using (RSACng rsaCng = new RSACng(512))
{
    var result = rsaCng.Encrypt(new byte[1], RSAEncryptionPadding.OaepSHA256); // throws ex
}
System.Security.Cryptography.CryptographicException: 'The parameter is incorrect.'
This exception was originally thrown at this call stack:
    System.Security.Cryptography.NCryptNative.EncryptData<T>(Microsoft.Win32.SafeHandles.SafeNCryptKeyHandle, byte[], ref T, System.Security.Cryptography.AsymmetricPaddingMode, System.Security.Cryptography.NCryptNative.NCryptEncryptor<T>)
    System.Security.Cryptography.NCryptNative.EncryptDataOaep(Microsoft.Win32.SafeHandles.SafeNCryptKeyHandle, byte[], string)
    System.Security.Cryptography.RSACng.Encrypt(byte[], System.Security.Cryptography.RSAEncryptionPadding)
    MiniJavaCertTest.Program.Test() in Program.cs
    MiniJavaCertTest.Program.Main() in Program.cs

Если я использую размер ключа 1024, он работает:

using (RSACng rsaCng = new RSACng(1024))
{
    var result = rsaCng.Encrypt(new byte[1], RSAEncryptionPadding.OaepSHA256); // works ok
}

Он также работает, если используется размер ключа 512, но с OaepSHA1 вместо OaepSHA256:

using (RSACng rsaCng = new RSACng(512))
{
    var result = rsaCng.Encrypt(new byte[1], RSAEncryptionPadding.OaepSHA1); // works ok
}

Есть идеи, почему это не работает и как заставить его работать на 512 + OaepSHA256?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...