zoukankan      html  css  js  c++  java
  • RSAParameters Struct

    RSAParameters Struct

    Remarks

    The RSA class exposes an ExportParameters method that enables you to retrieve the raw RSA key in the form of an RSAParameters structure. Understanding the contents of this structure requires familiarity with how the RSA algorithm works. The next section discusses the algorithm briefly.

    RSA Algorithm

    To generate a key pair, you start by creating two large prime numbers named p and q. These numbers are multiplied and the result is called n. Because p and q are both prime numbers, the only factors of n are 1, p, q, and n.

    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).

    Now you choose a number e, which is relatively prime to the value you calculated. The public key is now represented as {e, n}.

    To create the private key, you must calculate d, which is a number such that (d)(e) mod (p - 1)(q - 1) = 1. In accordance with the Euclidean algorithm, the private key is now {d, n}.

    Encryption of plaintext m to ciphertext c is defined as c = (m ^ e) mod n. Decryption would then be defined as m = (c ^ d) mod n.

    Summary of Fields

    Section A.1.2 of the PKCS #1: RSA Cryptography Standard on the RSA Laboratories Web site defines a format for RSA private keys.

    The following table summarizes the fields of the RSAParameters structure. The third column provides the corresponding field in section A.1.2 of PKCS #1: RSA Cryptography Standard.

    Summary of Fields
    RSAParameters field Contains Corresponding PKCS #1 field
    D d, the private exponent privateExponent
    DP d mod (p - 1) exponent1
    DQ d mod (q - 1) exponent2
    Exponent e, the public exponent publicExponent
    InverseQ (InverseQ)(q) = 1 mod p coefficient
    Modulus n modulus
    P p prime1
    Q q prime2

    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. Therefore, any part of the key related to d, p, or q must be kept secret. If you call 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 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. 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 and later: The serialization restrictions have been removed and all members of RSAParameters are serialized. 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.

    Fields

    Fields
    D

    Represents the D parameter for the RSA algorithm.

    DP

    Represents the DP parameter for the RSA algorithm.

    DQ

    Represents the DQ parameter for the RSA algorithm.

    Exponent

    Represents the Exponent parameter for the RSA algorithm.

    InverseQ

    Represents the InverseQ parameter for the RSA algorithm.

    Modulus

    Represents the Modulus parameter for the RSA algorithm.

    P

    Represents the P parameter for the RSA algorithm.

    Q

    Represents the Q parameter for the RSA algorithm.

  • 相关阅读:
    【Unity】自定义编辑器窗口——拓展编辑器功能
    【Unity】AssetBundle的使用——打包/解包
    【Unity】使用Resources类管理资源
    【Unity】使用AssetDatabase编辑器资源管理
    【Unity】协程Coroutine及Yield常见用法
    【Unity】制作简易定时器(Timer)
    python3使用csv模块读写csv文件
    Python3使用csv模块csv.writer().writerow()保存csv文件,产生空行的问题
    MongoDB服务无法启动,发生服务特定错误:100
    ValueError: update only works with $ operators
  • 原文地址:https://www.cnblogs.com/chucklu/p/15689245.html
Copyright © 2011-2022 走看看