Можно ли использовать чистые шифрующие и дешифрованные ключи в асимметричной криптографии вместо частных и открытых ключей?

StackOverflow https://stackoverflow.com/questions/3061225

Вопрос

Можно ли использовать чистые шифрующие и дешифрованные клавиши вместо частных и открытых ключей? Как я знаю в .NET Асимметричная RSA Реализация Частный ключ RSAParameters parameters = (new RSACryptoServiceProvider()).ExportParameters(true) это суслет открытого ключа. И использование закрытого ключа мы можем зашифровать и расшифровать наши данные. Но Мне нужен ключ только для расшифровки данные. Как это сделать?

Я экспериментировал на Nulling поля Rsaparameters, но объект RsacrptoserviceProvider не может импортировать такие параметры.

Это было полезно?

Решение

Если вы спрашиваете, что я думаю, вы спрашиваете, вы решаете эту проблему:

Вы зашифруете некоторые данные. Вы отправляете его клиентам и хотите, чтобы они могли его расшифровать, но вы делаете нет хочу, чтобы они могли шифровать что-нибудь, потому что тогда они могли убедить разное клиенты, которые они тебя.

Это близко? Можете ли вы сказать нам, какую проблему вы решаете?

Для остальных людей на нити звучит довольно понятно ОП хочет, чтобы ключ только для расшифровывания, а не обычный шириной только открытый ключ.

Редактировать: Комментарии правильные в том, что закрытый ключ нельзя использовать для шифрования, но не так сложно генерировать открытый ключ, учитывая закрытый ключ. Если у вас есть закрытый ключ, вы эффективно можете иметь оба клавиши.

Редактировать 2: OP, вы, вероятно, должны посмотреть в Цифровые подписи. Отказ Вы можете подписать сообщение (с помощью закрытого ключа), а затем подтвердить подпись с открытым ключом, что, я думаю, это именно то, о чем вы просили.

Другие советы

Для данных декодирования вам нужна либо публика или закрытый ключ. Зависит от того, как он был закодирован.

Придерживайтесь стандартных узоров, и просто будьте осторожны никогда распределить свой закрытый ключ.


Из ваших комментариев (к различным ответам) вам просто нужно подписать (хэш ваших данных). Это не используйте для шифрования данных с ключом, которую каждый может иметь.

Есть стандартные функции и шаблоны для подписания.

Я думаю, вам нужно использовать закрытый ключ для расшифровки и открытый ключ для шифрования.

Приемник (DECRYPTER) отправляет его открытый ключ отправителю (Encrypter). Поэтому каждый может отправлять сообщения, только приемник может их прочитать. Это то, что вам нужно?

Если вам нужно убедиться, что сообщение приходит от определенного отправителя, ему необходимо добавить подпись с помощью собственного закрытого ключа. Приемник может подтвердить это с помощью открытого ключа отправителей.

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

Просто иметь две ключевые пары.

Сторона A Получает закрытый ключ ключей 1 пары 1, а открытый ключ ключевой пары. 2. Сторон B получает открытый ключ ключей 1, а также закрытый ключ ключей 2.

Сторона B посылает его / ее / его сообщение, сначала зашифровав его с открытым ключом ключ 1, а затем закрытый ключ ключей 2 пары 2.

Сторона дешифровала результат, используя открытый ключ ключей 2 пары 2 и закрытый ключ ключей 1 (в этом порядке).

Сторона a может генерировать открытый ключ ключей 1 ключей 1, но не может генерировать закрытый ключ ключей 2 пары 2, поэтому сторона A не может генерировать действительное сообщение.

Обратные работы в другом направлении.

Внешняя сторона: если у вас есть центральный человек (или сервер), с тем, что каждый другой человек (или компьютер) общается, каждая сторона нуждается в своем собственном закрытом ключ, и они должны поделиться соответствующим открытым ключом с центральным человеком (или сервером ) они общаются с.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top