我不太明白这个问题:
根据https://www.madboa.com/geek/openssl/#key-rsa,您可以从私钥生成公钥。
openssl genrsa -out mykey.pem 1024
openssl rsa -in mykey.pem -pubout > mykey.pub
我最初的想法是它们是成对产生的。
RSA私钥中是否包含该和?还是公钥?
我不太明白这个问题:
根据https://www.madboa.com/geek/openssl/#key-rsa,您可以从私钥生成公钥。
openssl genrsa -out mykey.pem 1024
openssl rsa -in mykey.pem -pubout > mykey.pub
我最初的想法是它们是成对产生的。
RSA私钥中是否包含该和?还是公钥?
当前回答
openssl genrsa -out mykey.pem 1024
实际上会产生一个公私钥对。该对存储在生成的mykey中。pem文件。
openssl rsa -in mykey.pem -pubout > mykey.pub
将提取公钥并打印出来。这里有一个页面的链接,可以更好地描述这一点。
编辑:在这里检查示例部分。只输出私钥的公开部分:
openssl rsa -in key.pem -pubout -out pubkey.pem
使用SSH -keygen获取SSH使用的公钥:
ssh-keygen -y -f key.pem > key.pub
其他回答
寻找SSH公钥的人…
如果您希望提取用于OpenSSH的公钥,则需要以稍微不同的方式获取公钥
$ ssh-keygen -y -f mykey.pem > mykey.pub
此公钥格式与OpenSSH兼容。将公钥追加到remote:~/。Ssh /authorized_keys,就可以开始了
从SSH-KEYGEN文档(1)
Ssh-keygen -y [-f input_keyfile]
-y该选项将读取私有的OpenSSH格式文件,并将OpenSSH公钥打印到stdout。
公钥并不像某些人认为的那样存储在PEM文件中。私钥文件上的DER结构如下:
Openssl rsa -text -in mykey.pem
RSAPrivateKey ::= SEQUENCE {
version Version,
modulus INTEGER, -- n
publicExponent INTEGER, -- e
privateExponent INTEGER, -- d
prime1 INTEGER, -- p
prime2 INTEGER, -- q
exponent1 INTEGER, -- d mod (p-1)
exponent2 INTEGER, -- d mod (q-1)
coefficient INTEGER, -- (inverse of q) mod p
otherPrimeInfos OtherPrimeInfos OPTIONAL
}
因此,有足够的数据来计算公钥(模量和公共指数),这就是openssl rsa -in mykey。Pem -pubout可以
使用以下命令:
openssl req -x509 -nodes -days 365 -sha256 -newkey rsa:2048 -keyout mycert.pem -out mycert.pem Loading 'screen' into random state - done Generating a 2048 bit RSA private key .............+++ ..................................................................................................................................................................+++ writing new private key to 'mycert.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. If you check there will be a file created by the name : mycert.pem openssl rsa -in mycert.pem -pubout > mykey.txt writing RSA key If you check the same file location a new public key mykey.txt has been created.
似乎是流行的非对称密码学的一个共同特征;生成公钥/私钥涉及生成私钥,私钥包含以下密匙对:
openssl genrsa -out mykey.pem 1024
然后发布公钥:
openssl rsa -in mykey.pem -pubout > mykey.pub
or
openssl rsa -in mykey.pem -pubout -out mykey.pub
DSA和EC加密密钥具有相同的特性: 如。
openssl genpkey -algorithm ed25519 -out pvt.pem
Then
openssl pkey -in pvt.pem -pubout > public.pem
or
openssl ec -in ecprivkey.pem -pubout -out ecpubkey.pem
公共组件参与解密,并将其作为私钥的一部分使解密更快;它可以从私钥中删除,并在需要时计算(用于解密),作为使用密码/密钥/短语加密或保护私钥的替代或补充。如。
openssl pkey -in key.pem -des3 -out keyout.pem
or
openssl ec -aes-128-cbc -in pk8file.pem -out tradfile.pem
可以将第一个参数“aes-128-cbc”替换为任何其他有效的openssl密码名
被称为“私钥”的文件包含的信息比单独的私钥多得多,它包括生成私钥/公钥对所需的所有数据(质数、模数、指数等)。
很容易看到这些信息:
openssl genrsa -out private.pem 1024 #generate private key file
openssl rsa -in private.pem -text #view info in the private key file
openssl rsa -in private.pem -pubout -out public.pem #extract public key to file
openssl rsa -in public.pem -pubin -text #view info in the public key file
您将看到私钥文件包括质数和所有其他信息,而公共文件只包括模数和公共指数。