ALO*_*low 17 cryptography digital-signature elliptic-curve dsa diffie-hellman
我想知道是否有(并且我希望有)ECDH(椭圆曲线Diffie-Hellman)和ECDSA(椭圆曲线数字签名算法)的公钥大小的标准,用于素数场上的每种曲线类型(192,224,256) ,384和521).
emb*_*oss 27
如果使用其中一个"命名曲线",则公钥大小是固定的,并且取决于基础曲线的"字段大小".
公钥大小还取决于是使用"未压缩"表示还是"压缩"表示.在未压缩的形式中,公钥大小等于字段大小的两倍(以字节为单位)+ 1,在压缩形式中,它是字段大小+ 1.因此,如果您的曲线被定义secp256r1(也称为NIST P-256或X9.62 prime256v1),那么字段大小为256位或32字节.因此,公共密钥在未压缩形式下将精确地为65字节(32*2 +1)长,在压缩形式中为33字节(32 +1)长.
未压缩的形式由0x04(类似于DER OCTET STRING标签)加上X坐标的二进制表示的连接加上公共点的y坐标的二进制表示组成.
如果基础场是GF(2 ^ p),那么x和y可以被认为是来自[0,n-1]的元素.它们以通常的方式编码整数被编码,剩余的空间用于填充正好log2(p)/ 8字节用零填充.
对于GF(2 ^ m),x和y可以被认为是具有系数a_i 0或1的多项式a_0x_0 + ... + a_m-1.它们的二进制表示简单地是系数的串联.
确切的细节可以在SEC1v2中找到.(特别是第10页和第11页第2.3.3节" 椭圆 - 曲线 - 点 - 八位字符串转换 ")