Создать сертификат x509 и зашифровать много данных - PullRequest
0 голосов
/ 14 ноября 2018

Я хочу создать зашифрованный файл XML.Зашифровано целиком.

У меня есть один большой класс, который я сериализую в строку.Затем я конвертирую его в байты (например, в одном тестовом случае это занимает 1128 байтов) и я хочу зашифровать эти байты.

Мне нужен сертификат, к которому нет доступа ни у одного администратора, поэтому я создалмой сертификат такой:

New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -FriendlyName "XD" -NotAfter
(Get-Date).AddYears(10) -KeyAlgorithm RSA -KeyLength 2048 -Subject "test"

Затем в моем приложении на C # я получаю этот сертификат с помощью .Subject и хочу зашифровать свои байты, используя его.Проблема в том, что я получаю исключение с сообщением bad length, которое предполагает, что я хочу зашифровать слишком много байтов с помощью RSA.

Теперь я знаю, что могу использовать AES или что-то еще, но мне нужноиметь этот ключ в сертификате в хранилище, поэтому никто, кроме пользователя-администратора, который создает этот сертификат, не имеет к нему доступа.И поскольку я прочитал документацию для New-SelfSignedCertificate - он не может создать сертификат с ключом fe AES.

Итак, мой вопрос здесь: есть ли способ создать сертификат с определенным алгоритмом ключа, который мог бы шифровать по крайней мере 2-3 Кбайт?

1 Ответ

0 голосов
/ 14 ноября 2018

RSA может шифровать только те сообщения, которые меньше модуля пары ключей.Некоторые байты должны быть зарезервированы для заполнения, а точное число зависит от используемой схемы заполнения.

На практике асимметричные алгоритмы, такие как RSA, обычно используются для передачи ключей, а не напрямую для шифрования сообщений.Если у вас длинное сообщение, зашифруйте его с помощью AES, используя случайный ключ.Затем зашифруйте ключ AES с помощью RSA, используя открытый ключ получателя сообщения.

Стандарты, такие как TLS, PGP и S / MIME, используют RSA таким образом.

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