2015-12-24 71 views
0

首先,对于我的无知感到抱歉,我是密码学方面的新手。我正在尝试生成一个公钥,用于给定私钥的椭圆曲线。使用OpenSSL的EC私钥和域参数

因此,在现阶段,我有:

  1. 我将使用y^2 = x^3 - ax + b(prime256v1)曲线

  2. 一个.pem文件用私钥。

第一个问题是,私钥是否必须是随机的?我的意思是,它可以是我想要的吗?

当我使用OpenSSL命令:

openssl ecparam -in private.pem -name prime256v1 -out public.pem 

如果我做的public.pem一只猫,我得到:

-----BEGIN EC PARAMETERS----- 
BggqhkjOPQMBBw== 
-----END EC PARAMETERS----- 

但没有公共密钥。

第二个问题是,有人知道我在做什么错吗?

在此先感谢。

+1

这有点偏离主题在这里,因为它只是命令行用法。但它是X-mas。下一次,请使用超级用户。 –

+0

@Maarten - 我准备好接近尾声,但我会跟随你的领先。 [Unix和Linux堆栈交换](http://unix.stackexchange.com/)和[信息安全堆栈交换](http://security.stackexchange.com/)也可能会有用。 – jww

回答

1

带私钥的.pem文件。我在这里有第一个问题。私钥可以是随机的?我的意思是,它可以是我想要的吗?

号私钥的参数S可以是随机的,但ASN.1 - > DER - > PEM 编码私钥 - 其中包括参数 - 不能。

openssl ecparam -in private.pem -name prime256v1 -out public.pem ...但没有公钥,任何人都知道我在做什么错?

您需要改用ec命令,并使用-pubout。您目前得到.pem只包含编码为OID曲线的名字:

echo "BggqhkjOPQMBBw==" | openssl base64 -d | openssl asn1parse -inform DER 

结果:

0:d=0 hl=2 l= 8 prim: OBJECT   :prime256v1