Как генерировать случайные данные с помощью RSA? - PullRequest
0 голосов
/ 14 июня 2010

После загрузки моего объекта RSACryptoServiceProvider rsa я хотел бы создать ключ для моего объекта AES.Так как мне не нужно хранить ключ AES (мне нужно только расшифровать его на моей стороне prv), я думаю, мне не нужно хранить его, и я могу сгенерировать его с помощью моего открытого ключа.

Я думал делать rsa.Шифровать (байт [] с 4 жестко закодированными байтами);будет генерировать данные, которые мне нужны.Оказывается, каждый раз, когда я вызываю эту функцию, даже с теми же данными, я получаю разные результаты.Таким образом, у меня нет возможности воссоздать ключ AES, если он каждый раз отличается.

Как я могу генерировать данные с помощью RSA таким образом, чтобы я мог воссоздать их в любое время, когда мне нужно?

1 Ответ

2 голосов
/ 14 июня 2010

Вы не генерируете ключ AES с вашим открытым ключом. Вы генерируете ключ AES с помощью генератора случайных чисел и шифруете его открытым ключом получателя. В .NET, например, у вас будет AesCryptoServiceProvider для ваших функций AES и RSACryptoServiceProvider для ваших ключевых транспортных функций. Обычная последовательность событий для шифрования данных, которые должны быть отправлены Бобу:

  1. Создать случайный ключ AES, используя AesCryptoServiceProvider.GenerateKey способ.
  2. Зашифруйте ваши данные с помощью AES.
  3. Получить ключ AES от Ключа свойство экземпляра AES.
  4. Зашифруйте этот ключ AES с помощью RSA Боба. ключ с помощью RSACryptoServiceProvider.
  5. Передайте это вместе с зашифрованными данными на Боб.

Когда Боб получает эти данные, он использует свой закрытый ключ RSA, чтобы отменить эти шаги.

Обратите внимание, что это упрощенное описание того, что делается в стандартах шифрования сообщений, таких как CMS и PGP. В общем, вместо того, чтобы заново изобретать колесо, вы должны рассмотреть использование C # реализации одного из них.

РЕДАКТИРОВАТЬ

В пространстве имен System.Security.Cryptography.Pkcs существует несколько классов .NET, которые, похоже, имеют дело с CMS. Я не использовал их.

...