RSAParameters RSAParameters RSAParameters RSAParameters Struct

Определение

Представляет стандартные параметры для алгоритма RSA.Represents the standard parameters for the RSA algorithm.

public value class RSAParameters
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public struct RSAParameters
type RSAParameters = struct
Public Structure RSAParameters
Наследование
RSAParametersRSAParametersRSAParametersRSAParameters
Атрибуты

Комментарии

RSA Предоставляет ExportParameters метод, который позволяет получать необработанные ключ RSA в виде RSAParameters структуры.The RSA class exposes an ExportParameters method that enables you to retrieve the raw RSA key in the form of an RSAParameters structure. Для понимания содержимого этой структуры требуется знание как RSA работает алгоритм.Understanding the contents of this structure requires familiarity with how the RSA algorithm works. В следующем разделе кратко описываются алгоритм.The next section discusses the algorithm briefly.

Алгоритм RSARSA Algorithm

Чтобы создать пару ключей, сначала нужно создать два больших простых чисел с именем p и q.To generate a key pair, you start by creating two large prime numbers named p and q. Эти числа перемножаются и результат называется n.These numbers are multiplied and the result is called n. Так как p и q оба простых чисел, единственные множители n являются 1, p, q и n.Because p and q are both prime numbers, the only factors of n are 1, p, q, and n.

Если мы рассмотрим только те числа, которое меньше, чем n, количество чисел, взаимно простых до n, то есть, имеющих общие с n, equals (p - 1)(q-1).If we consider only numbers that are less than n, the count of numbers that are relatively prime to n, that is, have no factors in common with n, equals (p - 1)(q - 1).

Теперь нужно выбрать число e, который является относительно простым, в котором вычисляется значение.Now you choose a number e, which is relatively prime to the value you calculated. Открытый ключ теперь представляется в виде {e, n}.The public key is now represented as {e, n}.

Чтобы создать закрытый ключ, необходимо вычислить d, который представляет собой номер таким образом, чтобы (d)(e) mod (p - 1)(q-1) = 1.To create the private key, you must calculate d, which is a number such that (d)(e) mod (p - 1)(q - 1) = 1. В соответствии с алгоритмом Евклида закрытый ключ, теперь {d, n}.In accordance with the Euclidean algorithm, the private key is now {d, n}.

Шифрование m открытого текста, чтобы c зашифрованных данных определяется как c = (m ^ e) mod n.Encryption of plaintext m to ciphertext c is defined as c = (m ^ e) mod n. Расшифровка будет затем определен как m = (c ^ d) mod n.Decryption would then be defined as m = (c ^ d) mod n.

Сводка по полямSummary of Fields

Раздел A.1.2 из PKCS #1: Криптографическом стандарте RSA в Интернете RSA Laboratories узла определяет формат для закрытых ключей RSA.Section A.1.2 of the PKCS #1: RSA Cryptography Standard on the RSA Laboratories Web site defines a format for RSA private keys.

В следующей таблице перечислены поля RSAParameters структуры.The following table summarizes the fields of the RSAParameters structure. Третий столбец содержит соответствующее поле в разделе A.1.2 из PKCS #1: Стандарт шифрования RSA.The third column provides the corresponding field in section A.1.2 of PKCS #1: RSA Cryptography Standard.

ПолеRSAParameters RSAParameters field СодержитContains Соответствующее поле PKCS #1Corresponding PKCS #1 field
D d, закрытый показательd, the private exponent privateExponentprivateExponent
DP d mod (p - 1)d mod (p - 1) exponent1exponent1
DQ d mod (q - 1)d mod (q - 1) exponent2exponent2
Exponent e, показателя для открытого ключаe, the public exponent publicExponentpublicExponent
InverseQ (InverseQ) (q) = 1 mod p(InverseQ)(q) = 1 mod p Коэффициентcoefficient
Modulus nn остатка от деленияmodulus
P pp prime1prime1
Q qq prime2prime2

Безопасность RSA является производным от тот факт, что, учитывая открытый ключ {e, n}, это практически невозможно вычислить d, напрямую или путем разложения n в p и q.The security of RSA derives from the fact that, given the public key { e, n }, it is computationally infeasible to calculate d, either directly or by factoring n into p and q. Таким образом любой части ключа, связанную с d, p или q следует хранить в тайне.Therefore, any part of the key related to d, p, or q must be kept secret. Если вызванIf you call

ExportParameters запросить только сведения об открытом ключе, поэтому вы получите только Exponent и Modulus.ExportParameters and ask for only the public key information, this is why you will receive only Exponent and Modulus. Другие поля доступны только в том случае, если у вас есть доступ к закрытому ключу, и необходимо отправить запрос.The other fields are available only if you have access to the private key, and you request it.

RSAParameters не зашифрован любым способом, поэтому будьте внимательны при использовании с данные закрытого ключа.RSAParameters is not encrypted in any way, so you must be careful when you use it with the private key information. На самом деле ни одно из полей, которые содержат данные закрытого ключа может быть сериализован.In fact, none of the fields that contain private key information can be serialized. При попытке сериализации RSAParameters вызов структуры с помощью удаленного взаимодействия или с помощью одного из сериализаторов, вы получите только сведения об открытом ключе.If you try to serialize an RSAParameters structure with a remoting call or by using one of the serializers, you will receive only public key information. Если вы хотите передать данные закрытого ключа, необходимо отправить эти данные вручную.If you want to pass private key information, you will have to manually send that data. Во всех случаях если любой пользователь может вывести параметры, ключ будет бесполезен.In all cases, if anyone can derive the parameters, the key that you transmit becomes useless.

.NET core 2.1.0 и более поздних версиях: Сериализация ограничений будут удалены и все члены RSAParameters сериализуются..NET Core 2.1.0 and later: The serialization restrictions have been removed and all members of RSAParameters are serialized. Будьте excercised при записи или обновлении кода для .NET Core версии 2.1.0 или более поздней версии, поскольку любой пользователь может быть производным или хотят перехватить закрытых ключей параметров ключ и все данные зашифрованы ли подписан его компрометации.Care must be excercised when writing or upgrading code against .NET Core 2.1.0 or later, because if anyone can derive or intercept the private key parameters the key and all the information encrypted or signed with it are compromised.

Поля

D D D D

Представляет параметр D для алгоритма RSA.Represents the D parameter for the RSA algorithm.

DP DP DP DP

Представляет параметр DP для алгоритма RSA.Represents the DP parameter for the RSA algorithm.

DQ DQ DQ DQ

Представляет параметр DQ для алгоритма RSA.Represents the DQ parameter for the RSA algorithm.

Exponent Exponent Exponent Exponent

Представляет параметр Exponent для алгоритма RSA.Represents the Exponent parameter for the RSA algorithm.

InverseQ InverseQ InverseQ InverseQ

Представляет параметр InverseQ для алгоритма RSA.Represents the InverseQ parameter for the RSA algorithm.

Modulus Modulus Modulus Modulus

Представляет параметр Modulus для алгоритма RSA.Represents the Modulus parameter for the RSA algorithm.

P P P P

Представляет параметр P для алгоритма RSA.Represents the P parameter for the RSA algorithm.

Q Q Q Q

Представляет параметр Q для алгоритма RSA.Represents the Q parameter for the RSA algorithm.

Применяется к

Дополнительно