嗨,我在写一个程序,从导入私钥。pem
文件,并创建一个私钥对象供以后使用。。我面临的问题是,一些pem
文件头以
-----BEGIN PRIVATE KEY-----
而其他人则从
-----BEGIN RSA PRIVATE KEY-----
通过我的搜索,我知道第一个是PKCS#8格式的,但我不知道另一个属于什么格式。
看看
从上面的链接复制内容以便快速参考:
#define PEM_STRING_X509_OLD "X509 CERTIFICATE"
#define PEM_STRING_X509 "CERTIFICATE"
#define PEM_STRING_X509_PAIR "CERTIFICATE PAIR"
#define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE"
#define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST"
#define PEM_STRING_X509_REQ "CERTIFICATE REQUEST"
#define PEM_STRING_X509_CRL "X509 CRL"
#define PEM_STRING_EVP_PKEY "ANY PRIVATE KEY"
#define PEM_STRING_PUBLIC "PUBLIC KEY"
#define PEM_STRING_RSA "RSA PRIVATE KEY"
#define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY"
#define PEM_STRING_DSA "DSA PRIVATE KEY"
#define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY"
#define PEM_STRING_PKCS7 "PKCS7"
#define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA"
#define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY"
#define PEM_STRING_PKCS8INF "PRIVATE KEY"
#define PEM_STRING_DHPARAMS "DH PARAMETERS"
#define PEM_STRING_DHXPARAMS "X9.42 DH PARAMETERS"
#define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS"
#define PEM_STRING_DSAPARAMS "DSA PARAMETERS"
#define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY"
#define PEM_STRING_ECPARAMETERS "EC PARAMETERS"
#define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY"
#define PEM_STRING_PARAMETERS "PARAMETERS"
#define PEM_STRING_CMS "CMS"
看见https://polarssl.org/kb/cryptography/asn1-key-structures-in-der-and-pem(在页面上搜索“BEGIN RSA PRIVATE KEY”)(为子孙后代提供存档链接,以防万一)。
开始RSA私钥
是PKCS#1,只是一个RSA密钥。它本质上只是PKCS#8中的关键对象,但前面没有版本或算法标识符BEGIN PRIVATE KEY
是PKCS#8,表示密钥类型包含在密钥数据本身中。从链接:
未加密的PKCS#8编码数据以标签开始和结束:
-----BEGIN PRIVATE KEY-----
BASE64 ENCODED DATA
-----END PRIVATE KEY-----
在base64编码数据中,存在以下DER结构:
PrivateKeyInfo ::= SEQUENCE {
version Version,
algorithm AlgorithmIdentifier,
PrivateKey BIT STRING
}
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL
}
因此,对于RSA私钥,OID是1.2.840.113549.1.1.1,并且有一个RSAPrivateKey作为PrivateKey数据位字符串。
与“开始RSA私钥”
相反,它总是指定一个RSA密钥,因此不包括密钥类型OIDBEGIN RSA私钥
isPKCS#1
:
RSA私钥文件(PKCS#1)
RSA私钥PEM文件特定于RSA密钥。
它以标签开始和结束:
-----BEGIN RSA PRIVATE KEY-----
BASE64 ENCODED DATA
-----END RSA PRIVATE KEY-----
在base64编码数据中,存在以下DER结构:
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
}
(我正在用MAC) 我的id_rsa以 但我希望一开始 我已将我的身份证发送给rsa。发布给服务器管理员以获得对服务器的访问权,因此我不想生成新密钥。 > 有什么方法可以将我的id_rsaopenssh私钥转移到RSA私钥吗?(请指挥。) 如果我可以传输,我是否还需要传输id_rsa。酒吧(请发命令。)看来是我的错。pub没有像id_rsa这样的头,所以我不确定是否也应该传输它。 非常感谢。
本文向大家介绍私钥和公钥之间的区别,包括了私钥和公钥之间的区别的使用技巧和注意事项,需要的朋友参考一下 私钥和公钥术语用于加密和解密。这些键用于加密/解密敏感信息。 私钥 私钥用于加密和解密数据。此键在加密的敏感信息的发送者和接收者之间共享。私钥也被称为对称的,对双方都是通用的。私钥加密比公钥加密机制更快。 公钥 公共键用于加密,私有键用于解密数据。私钥在加密的敏感信息的发送者和接收者之间共享。公
我想在Java中通过SSL/TLS建立一个客户机服务器通信。服务器是多线程的。使用openssl,我充当自己的CA(为权威创建私钥和自签名证书)。现在我要为我的服务器和客户端创建密钥和证书,这些密钥和证书是从我创建的CA签名的。 1)我必须根据提示为每个客户创建证书和密钥吗?还是另一种“自动”方式,例如使用脚本? 2)我已经看到用于设置密钥库的代码 问题是我如何单独创建这些jks文件?public
我在使用Java Bouncycastle的客户机和使用Python RSA库的密钥服务器之间交换私钥时遇到了困难。PEM格式用于通过REST传输密钥。keyserver无法解密我提供的密钥(加密密码更改时需要),它需要PKCS#1或PKCS#8密钥和PEM,如下所示: 但是BouncyCastle的输出(使用JCEpeEncryptorBuilder和JcaMiscPEMGenerator)的起
我正在使用Mac上的ssh-keygen生成的公钥/私钥设置文件到服务器的SFTP传递。我生成的私钥看起来与代码库中的其他私钥不同(它没有标头,是“OpenSSH私钥”而不是“RSA私钥”)。
我一直在阅读一些RSA文献和堆栈溢出问题,但我没有得到明确的答案。 仅给定一个RSA私钥模和私钥指数,这是我所拥有的全部(也足够用于所有密码相关操作),我能得到相关的公钥模和公钥指数吗? 另外,我是否可以仅用这两个参数获得私钥的编码形式?我在java中尝试了以下方法(java不是实际的请求),但是支持它的OpenSSL引擎失败,错误为:04000090:RSA例程:openSSL_internal