跳至正文

pem格式密钥(pem格式密钥转换成16进制)

怎么样才能把string的密钥转成.pem格式

怎么样才能把string的密钥转成.pem格式

如何从pem格式的私钥文件中读取私钥

如何从pem格式的私钥文件中读取私钥

以下命令来生成密钥对。

$openssl genrsa -out mykey.pem 2048

$openssl pkcs8 -topk8 -inform PEM -outform PEM -in mykey.pem \

-out private_key.pem -nocrypt

这个命令得到的公共密钥。

$ openssl rsa -in mykey.pem -pubout -outform DER -out public_key.der

我写了两方法读取私钥和公钥

分别。public PrivateKey getPemPrivateKey(String filename, String algorithm) throws Exception {

File f = new File(filename);

FileInputStream fis = new FileInputStream(f);

DataInputStream dis = new DataInputStream(fis);

byte[] keyBytes = new byte[(int) f.length()];

dis.readFully(keyBytes);

dis.close();

String temp = new String(keyBytes);

String privKeyPEM = temp.replace(“—–BEGIN PRIVATE KEY—–\n”, “”);

privKeyPEM = privKeyPEM.replace(“—–END PRIVATE KEY—–“, “”);

//System.out.println(“Private key\n”+privKeyPEM);

Base64 b64 = new Base64();

byte [] decoded = b64.decode(privKeyPEM);

PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(decoded);

KeyFactory kf = KeyFactory.getInstance(algorithm);

return kf.generatePrivate(spec);

}

public PublicKey getPemPublicKey(String filename, String algorithm) throws Exception {

File f = new File(filename);

FileInputStream fis = new FileInputStream(f);

DataInputStream dis = new DataInputStream(fis);

byte[] keyBytes = new byte[(int) f.length()];

dis.readFully(keyBytes);

dis.close();

String temp = new String(keyBytes);

String publicKeyPEM = temp.replace(“—–BEGIN PUBLIC KEY—–\n”, “”);

publicKeyPEM = privKeyPEM.replace(“—–END PUBLIC KEY—–“, “”);

Base64 b64 = new Base64();

byte [] decoded = b64.decode(publicKeyPEM);

X509EncodedKeySpec spec =

new X509EncodedKeySpec(decoded);

KeyFactory kf = KeyFactory.getInstance(algorithm);

return kf.generatePublic(spec);

}

怎么把pem密钥转为key pub

怎么把pem密钥转为key pub

将密钥上传到一台自己的linux主机,下面举例文件名为 key.pemchmod 600 key.pem改写密钥格式为 OpenSSH,如果询问passphrase可以留空(直接回车)ssh-keygen -p -f key.pem生成公密钥 .pub…

ios 私钥pem怎么转pkcs8

用途: pkcs8格式的私钥转换工具。它处理在PKCS#8格式中的私钥文件。它可以用多样的PKCS#5 (v1.5 and v2.0)和 PKCS#12算法来处理没有解密的PKCS#8 PrivateKeyInfo格式和EncryptedPrivateKeyInfo格式。 用法: [cpp] view plaincopy openssl pkcs8 [-inform PEMDER] [-outform PEMDER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-topk8] [-noiter] [-nocrypt] [-nooct] [-embed] [-nsdb] [-v2 alg] [-v1 alg] [-engine id] 选项说明: -inform PEMDER::输入文件格式,DER或者PEM格式。DER格式采用ASN1的DER标准格式。一般用的多的都是PEM格式,就是base64编码格式。 -outform DERPEM:输出文件格式,DER或者PEM格式。 -in filename:输入的密钥文件,默认为标准输入。如果密钥被加密,会提示输入一个密钥口令。 -passin arg:输入文件口令保护来源。 -out filename:输出文件,默认为标准输出。如果任何加密操作已经执行,会提示输入一个密钥值。输出的文件名字不能和输入的文件名一样。 -passout arg:输出文件口令保护来源。 -topk8:通常的是输入一个pkcs8文件和传统的格式私钥文件将会被写出。设置了此选项后,位置转换过来:输入一个传统格式的私钥文件,输出一个PKCS#8格式的文件。 -noiter:MAC保护计算次数为1。 -nocrypt:PKCS#8密钥产生或输入一般用一个适当地密钥来加密PKCS#8 EncryptedPrivateKeyInfo结构。设置了此选项后,一个不加密的PrivateKeyInfo结构将会被输出。这个选项一直不加密私钥文件,在绝对必要的时候才能够使用。某些软件例如一些JAVA代码签名软件使用不加密的私钥文件。 -nooct:这个选项产生的RSA私钥文件是一个坏的格式,一些软件将会使用。特别的是,私钥文件必须附上一个八位组字符串,但是一些软件仅仅包含本身的结构体没有使八位组字符串所环绕。不采用八位组表示私钥。 -embed:这个选项产生的RSA私钥文件是一个坏的格式。在私钥结构体中采用嵌入式DSA参数格式。在这个表单中,八位组字符串包含了ASN1 SEQUENCE中的两种结构:一个SEQUENCE包含了密钥参数,一个ASN1 INTEGER包含私钥值。 -nsdb:这个选项产生的RSA私钥文件是一个坏的格式并兼容了Netscape私钥文件数据库。采用NetscapeDB的DSA格式。 -v2 alg:采用PKCS#5 v2.0,并指定加密算法,默认的是PKCS#8私钥文件被叫做B(该算法用56字节的DES加密但是在PKCS#5 v1.5中有更加强壮的加密算法)的加密算法用口令进行加密。用B<-v2>选项,PKCS#5 v2.0相关的算法将会被使用,可以是des3(168字节)和rc2(128字节),推荐des3。 -v1 alg:采用PKCS#5 v1.5或pkcs12,并指定加密算法。可采用的算法见下面。 -engine id:指定硬件引擎。 注意: 加密了的PEM编码PKCS#8文件表单用下面的头部和尾部: —–BEGIN ENCRYPTED PRIVATE KEY—– —–END ENCRYPTED PRIVATE KEY—– 未加密的表单用: —–BEGIN PRIVATE KEY—– —–END PRIVATE KEY—– 跟传统的SSLeay算法相比,用PKCS#5 v2.0系列的算法加密私钥,有更高的安全性以及迭代次数。于是附加的安全性是经过深思熟虑的。 默认的加密算法仅仅是56字节的,是因为它是PKCS#8所支持的最好的方法。 有一些软件使用PKCS#12基于密钥的加密算法来加密PKCS#8格式的私钥:它们会自动的处理但是没有选项来操作。 在PKCS#8格式中,有可能的是输出DER编码格式的经过加密的私钥文件,是因为加密的详细说明包含在DER等级中,相反的是传统的格式包含在PEM邓丽中。 PKCS#5 v1.5和 PKCS#12 算法: 各种各样的算法可以被选项-v1所使用。包含PKCS#5 v1.5和 PKCS#12 算法。详细描述如下: B:这两个算法包含在PKCS#5 v1.5中。它们仅仅提供56字节的保护,加密算法用DES。 B:它们在传统的PKCS#5 v1.5中没有被提到,但是它们用同样地密钥引出算法,被一些软件所支持。在PKCS#5 v2.0中所提到。它们使用64字节的RC2以及56字节的DES。 B:它们是PKCS#12基于密钥的加密算法,它们允许使用高强度的加密算法,例如3des或128位的RC2。 实例: 用3des算法将传统的私钥文件转换为PKCS#5 v2.0: [cpp] view plaincopy openssl pkcs8 -in key.pem -topk8 -v2 des3 -out enckey.pem 用PKCS#5 1.5兼容的DES算法将私钥文件转换为pkcs8文件: [html] view plaincopy openssl pkcs8 -in ocspserverkey.pem -topk8 -out ocspkcs8key.pem 用PKCS#12兼容的3DES算法将私钥文件转换为pkcs8文件: [html] view plaincopy openssl pkcs8 -in key.pem -topk8 -out enckey.pem -v1 PBE-SHA1-3DES 读取一个DER格式加密了的PKCS#8格式的私钥: [cpp] view plaincopy openssl pkcs8 -inform DER -nocrypt -in key.der -out key.pem 转换一个PKCS#8格式的私钥到传统的私钥: [cpp] view plaincopy openssl pkcs8 -in pk8.pem -out key.pem pkcs8中的私钥以明文存放: [html] view plaincopy openssl pkcs8 -in ocspserverkey.pem -topk8 -nocrypt -out ocspkcs8key.pem 标准: PKCS#5 v2.0的测试向量的实现是以通告的形式用高强度的迭代次数算法3DES、DES和RC2来加密的。很多人要确认能够解密产生的私钥。 PKCS#8格式的DSA私钥文件没有备注文件中的:在PKCS#11 v2.01中的11.9节被隐藏了的。OpenSSL的默认DSA PKCS#8私钥格式隐藏在这个标准中。 BUGs: 必须有一个选项打印使用的加密算法的其他详细细节,例如迭代次数。 PKCS#8用3DES和PKCS#5 v2.0必须是默认的私钥文件:目前为了命令的兼容性。

百度电商开放平台公钥怎么填写,是直接把pem文件去掉begin和end的头尾,直接复制中间的字符串就可以吗?

是,把pem文件右键用记事本格式打开,直接复制中间字符串就行…

如何将perm证书和key私钥导入jks

Java KeyStore的类型

JKS和JCEKS是Java密钥库(KeyStore)的两种比较常见类型(我所知道的共有5种,JKS, JCEKS, PKCS12, BKS,UBER)。

JKS的Provider是SUN,在每个版本的JDK中都有,JCEKS的Provider是SUNJCE,1.4后我们都能够直接使用它。

JCEKS在安全级别上要比JKS强,使用的Provider是JCEKS(推荐),尤其在保护KeyStore中的私钥上(使用TripleDes)。

PKCS#12是公钥加密标准,它规定了可包含所有私钥、公钥和证书。其以二进制格式存储,也称为 PFX 文件,在windows中可以直接导入到密钥区,注意,PKCS#12的密钥库保护密码同时也用于保护Key。

BKS

来自BouncyCastle

Provider,它使用的也是TripleDES来保护密钥库中的Key,它能够防止证书库被不小心修改(Keystore的keyentry改掉1个

bit都会产生错误),BKS能够跟JKS互操作,读者可以用Keytool去TryTry。

UBER

比较特别,当密码是通过命令行提供的时候,它只能跟keytool交互。整个keystore是通过PBE/SHA1/Twofish加密,因此

keystore能够防止被误改、察看以及校验。以前,Sun

JDK(提供者为SUN)允许你在不提供密码的情况下直接加载一个Keystore,类似cacerts,UBER不允许这种情况。

证书导入

Der/Cer证书导入:

要从某个文件中导入某个证书,使用keytool工具的-import命令:

1

keytool

-import -file

mycert.der -keystore mykeystore.jks

如果在 -keystore 选项中指定了一个并不存在的密钥仓库,则该密钥仓库将被创建。

如果不指定 -keystore 选项,则缺省密钥仓库将是宿主目录中名为 .keystore 的文件。如果该文件并不存在,则它将被创建。

创建密钥仓库时会要求输入访问口令,以后需要使用此口令来访问。可使用-list命令来查看密钥仓库里的内容:

1

keytool

-list -rfc -keystore mykeystore.jks

P12格式证书导入:

keytool无法直接导入PKCS12文件。

第一种方法是使用IE将pfx证书导入,再导出为cert格式文件。使用上面介绍的方法将其导入到密钥仓库中。这样的话仓库里面只包含了证书信息,没有私钥内容。

第二种方法是将pfx文件导入到IE浏览器中,再导出为pfx文件。新生成的pfx不能被导入到keystore中,报错:keytool错误:java.lang.Exception:

所输入的不是一个 X.509 认证。新生成的pfx文件可以被当作keystore使用。但会报个错误as

unknown attr1.3.6.1.4.1.311.17.1,查了下资料,说IE导出的就会这样,使用Netscape就不会有这个错误.

第三种方法是将pfx文件当作一个keystore使用。但是通过微软的证书管理控制台生成的pfx文件不能直接使用。keytool不认此格式,报keytool错误:java.io.IOException:

failed to decrypt safe contents entry。需要通过OpenSSL转换一下:

1

openssl

pkcs12 -in mycerts.pfx -out mycerts.pem

2

openssl

pkcs12 -export -in mycerts.pem -out mykeystore.p12

通过keytool的-list命令可检查下密钥仓库中的内容:

1

keytool

-rfc -list -keystore mykeystore.p12 -storetype pkcs12

这里需要指明仓库类型为pkcs12,因为缺省的类型为jks。这样此密钥仓库就即包含证书信息也包含私钥信息。

P7B格式证书导入:

keytool无法直接导入p7b文件。

需要将证书链RootServer.p7b(包含根证书)导出为根rootca.cer和子rootcaserver.cer 。

将这两个证书导入到可信任的密钥仓库中。

1

keytool

-import -alias

rootca -trustcacerts -file rootca.cer -keystore testkeytrust.jks

遇到是否信任该证书提示时,输入y

1

keytool

-import -alias

rootcaserver -trustcacerts -file rootcaserver.cer -keystore testkeytrust.jks

总结

P12格式的证书是不能使用keytool工具导入到keystore中的

The Sun’s PKCS12 Keystore对从IE和其他的windows程序生成的pfx格式的证书支持不太好.

P7B证书链不能直接导入到keystore,需要将里面的证书导出成cer格式,再分别导入到keystore。

如何将.key与.pem格式的https证书导入到IIS中

在linux系统中转换证书格式 openssl pkcs12 -export -out iiscert.pfx -inkey private-cert.key -in public-cert.pem注意:上面的命令还需要加上参数-certfile CARoots.pem(需要有顶级根的证书文件),不然会出现 https://q.cnblogs.com/q/85096/ 中的问题 然后再吧转换出来的pfx证书拿到windows里导入iis 转自: 网页链接

JAVA中,如何读取pem格式的私钥算法并生成签名?

可以到bouncycastle官网找一些资料.bouncycastle提供了PemReader/PemWriter可以读写证书,还有Signer类可以使用证书做签名.

openssl 生成的.pem文件 java怎么从这个文件中得到私钥信息

您好,这样的:java.security.cert.CertificateFactory; java.security.cert.X509Certificate; 下载API文档,好好看看这两个类的说明.如果PEM是BASE64格式的文件,则先转换成二进制.可以尝试调用openssl的api函数PEM_read_bio_PrivateKey()来读取密钥.

pem 格式证书 怎么使用openssl

命令密钥 $openssl genrsa -out mykey.pem 2048 $openssl pkcs8 -topk8 -inform PEM -outform PEM -in mykey.pem \ -out private_key.pem -nocrypt 命令公共密钥 $ openssl rsa -in mykey.pem -pubout -outform DER -out public_key.der 我写两读取…