Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenSSL使用什么方法来组合公钥';s坐标?_Openssl - Fatal编程技术网

OpenSSL使用什么方法来组合公钥';s坐标?

OpenSSL使用什么方法来组合公钥';s坐标?,openssl,Openssl,OpenSSL,至少通过命令行,以某种压缩格式转储椭圆曲线的公共部分。我一直无法找到一种方法,让它分别作为x坐标和y坐标转储。关于这是否是我在RFCs中看到的那些“压缩”方法之一,缺乏文档。如果是,那么我找不到用于将压缩形式转换为原始坐标的过程。OpenSSL对此使用什么方法?可以从命令行执行吗?生成EC参数 使用参数生成EC密钥 打印公钥、私钥组件(未压缩) 或 打印公钥、私钥组件(压缩) -- 参考文献 另外,您可以访问wiki.openssl.org,这里有许多示例,有明确的解释。EC

OpenSSL,至少通过命令行,以某种压缩格式转储椭圆曲线的公共部分。我一直无法找到一种方法,让它分别作为x坐标和y坐标转储。关于这是否是我在RFCs中看到的那些“压缩”方法之一,缺乏文档。如果是,那么我找不到用于将压缩形式转换为原始坐标的过程。OpenSSL对此使用什么方法?可以从命令行执行吗?

生成EC参数 使用参数生成EC密钥 打印公钥、私钥组件(未压缩) 或

打印公钥、私钥组件(压缩) --

参考文献

  • 另外,您可以访问wiki.openssl.org,这里有许多示例,有明确的解释。

    ECC密钥的公共点存储有两种主要格式,压缩和未压缩。OpenSSL支持这两种方式,但默认情况下,写入未压缩

    ec-text
    选项在标准输出上以十六进制显示输入文件中的内容。
    ec-conv_form
    选项仅影响(PEM或DER)输出文件(可以是标准输出或其他)中写入的内容,并且由于您指定了
    -noout
    ,因此没有PEM或DER输出

    所以你的问题实际上是关于输入的,可能是压缩的,也可能不是。 正如您链接的OpenSSL手册页所述,OpenSSL(与AFAICT everyone一样)使用高效加密标准组的文件SEC1中定义的ASN.1格式,其中“高效”表示ECC,“组”主要表示认证COM。(相关的rfc也链接到此文档,例如X.509/PKIX证书中ECC公钥的rfc 5480。)

    具体来说,, C.4表示
    ECPrivateKey
    中的
    publicKey
    字段与C.3(对于
    ECPublicKey
    )相同,C.3表示它是一个包含
    ECPoint
    的位字符串,该点在C.2中通过参考2.3.3(et seq)定义,表示(除了无穷远处的点)是

    • 未压缩:八位字节04后跟X和Y坐标值(按该顺序,无需额外帧),作为大端二进制整数,或

    • 压缩:八位字节02或03后跟X坐标(仅限)作为大端二进制整数,其中02和03之间的选择编码Y坐标是偶数还是奇数

    openssl ecparam -name secp256k1 -out secp256k1.pem
    
    openssl ecparam -in secp256k1.pem -genkey -noout -out secp256k1-key.pem
    
    openssl ec -in secp256k1-key.pem -text -noout
    
    openssl ec -in secp256k1-key.pem -text -noout -conv_form uncompressed
    
    openssl ec -in secp256k1-key.pem -text -noout -conv_form compressed