Ошибка произошла при декодировании дополнения OAEP

[Важно понять, что техника ISite ниже только работает во время проектирования. Поскольку ContainerControl общедоступен и присвоен значение, VisualStudio запишет код инициализации, который устанавливает его во времени выполнения. Сайт установлен во времени выполнения, но Вы не можете добраться, ContainerControl от него]

Вот статья , которая описывает, как сделать это для невидимого компонента.

В основном необходимо добавить свойство ContainerControl к компоненту:

public ContainerControl ContainerControl
{
  get { return _containerControl; }
  set { _containerControl = value; }
}
private ContainerControl _containerControl = null;

и переопределение свойство Site:

public override ISite Site
{
  get { return base.Site; }
  set
  {
    base.Site = value;
    if (value == null)
    {
      return;
    }

    IDesignerHost host = value.GetService(
        typeof(IDesignerHost)) as IDesignerHost;
    if (host != null)
    {
        IComponent componentHost = host.RootComponent;
        if (componentHost is ContainerControl)
        {
            ContainerControl = componentHost as ContainerControl;
        }
    }
  }
}

, Если Вы делаете это, ContainerControl будет инициализирован для ссылки на содержание формы разработчиком. Связанная статья объясняет его более подробно.

А хороший способ видеть, как сделать, вещи состоят в том, чтобы посмотреть на реализацию Типов в Платформе.NET, которые имеют поведение, подобное тому, что Вы хотите с инструментом, таким как Отражатель Лутца. В этом случае, Система. Windows. Формы. ErrorProvider является хорошим примером для взгляда на: Компонент, который должен знать его содержание Формы.

15
задан Luke 5 June 2018 в 16:59
поделиться

2 ответа

Распространенной ошибкой является попытка расшифровать с использованием открытого ключа.

20
ответ дан 1 December 2019 в 01:05
поделиться

Я столкнулся с этой точной проблемой. UnicodeEncoding.Getbytes не всегда является обратным в UnicodeEncoding.getString .

byte[] a = new byte[32];

RandomNumberGenerator gen = new RNGCryptoServiceProvider();
gen.GetBytes(a);

UnicodeEncoding byteConverter = new UnicodeEncoding();

byte[] b = byteConverter.GetBytes(byteConverter.GetString(a));

//byte array 'a' and byte array 'b' will not always contain the same elements.

Вот почему RsacryptoserviceProvider.decrypt не удается. Многие примеры шифрования / расшифровки в Интернете используют кодировку Unicode. Не используйте кодировку Unicode. Используйте Convert.Frombase64String и и Вместо этого Convert.tobase64String .

14
ответ дан 1 December 2019 в 01:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: