PKCS8密钥格式

以下使用RSA 512

1.生成密钥对

openssl genrsa -out rsa_pem.key 512

2.DER 格式

openssl rsa -in rsa_pem.key -inform PEM -out rsa_der.key -outform DER

---------------------------------------------------------------------

0000 30  13A: SEQUENCE {
0004 02    1:   INTEGER 0
0007 02   41:   INTEGER
            :     00 9F F5 E3 C8 D3 36 C6 BC 0E 33 DC 92 D1 A2 7B
            :     DA BC C1 63 23 1D A3 16 B5 59 14 22 EE E4 DB 16
            :     6D DF 3A C3 AD A2 DD D7 5B 6C E6 A0 02 DF 65 86
            :     E3 1B 21 F2 10 5A 95 8B AA F1 D8 CD 53 31 01 AF
            :     A9
004A 02    3:   INTEGER 65537
004F 02   40:   INTEGER
            :     0C 96 47 BF 54 C7 79 A9 F0 A0 2A 1A 2F 7E CE AA
            :     2E B2 34 FF DD 64 28 F4 4A 37 28 6C 8D FB A3 6F
            :     10 00 6B 10 4C E3 57 7A 9E A5 FA 8E BC 30 4A 07
            :     6C 5F 4D F8 11 B7 89 07 02 D9 B3 22 DB DF 24 01
0091 02   21:   INTEGER
            :     00 D4 57 03 96 15 A3 34 E7 FD 16 7C 07 27 5E F0
            :     CE 73 F9 2C 95 E5 E8 7D 27 52 77 03 74 41 4F E3
            :     29
00B4 02   21:   INTEGER
            :     00 C0 D9 C4 EB D1 F3 48 27 C6 F4 12 13 B5 4B 54
            :     1F 28 30 BF 27 C4 DD C4 78 CE 8E 37 D9 20 BD 78
            :     81
00D7 02   20:   INTEGER
            :     2B 06 22 7C E3 8F 79 25 D4 5B 1C F0 5A 22 DB 8A
            :     09 67 A0 88 12 D8 83 9B 57 13 34 48 F6 FE D7 D9
00F9 02   20:   INTEGER
            :     04 A1 B6 4F 0B 9D D2 2F D2 61 6E 45 B6 E6 F6 40
            :     41 50 DA 66 74 1D F7 68 07 5D F7 0D 69 F1 E3 01
011B 02   21:   INTEGER
            :     00 B1 80 EB 13 C6 88 49 E2 EB BC 28 51 D2 08 1D
            :     54 00 52 52 E5 F9 08 C0 93 84 CD 4D 5F 40 6D E1
            :     72
            :   }

3.PKCS#8 格式

openssl pkcs8 -topk8 -in rsa_pem.key -inform PEM -out pcks8_rsa.key -outform DER -nocrypt

---------------------------------------------------------------------

0000 30  154: SEQUENCE {
0004 02    1:   INTEGER 0
0007 30    D:   SEQUENCE {
0009 06    9:     OBJECT IDENTIFIER rsaEncryption (1 2 840 113549 1 1 1)
0014 05    0:     NULL
            :     }
0016 04  13E:   OCTET STRING
            :     30 82 01 3A 02 01 00 02 41 00 9F F5 E3 C8 D3 36
            :     C6 BC 0E 33 DC 92 D1 A2 7B DA BC C1 63 23 1D A3
            :     16 B5 59 14 22 EE E4 DB 16 6D DF 3A C3 AD A2 DD
            :     D7 5B 6C E6 A0 02 DF 65 86 E3 1B 21 F2 10 5A 95
            :     8B AA F1 D8 CD 53 31 01 AF A9 02 03 01 00 01 02
            :     40 0C 96 47 BF 54 C7 79 A9 F0 A0 2A 1A 2F 7E CE
            :     AA 2E B2 34 FF DD 64 28 F4 4A 37 28 6C 8D FB A3
            :     6F 10 00 6B 10 4C E3 57 7A 9E A5 FA 8E BC 30 4A
            :             [ Another 190 bytes skipped ]
            :   }

以下使用ECC 192

1.生成密钥对

openssl ecparam -name secp192r1 -out ec_key.pem -genkey

2.DER 格式

openssl ec -in ec_key.pem -inform PEM -out ec_der.key -outform DER

---------------------------------------------------------------------

0000 30   5F: SEQUENCE {
0002 02    1:   INTEGER 1
0005 04   18:   OCTET STRING
            :     1A 95 B6 FE 96 F6 49 1E 1C C5 91 BD 8B 26 53 F0
            :     7B 3B 0C 2F 50 75 BC 80
001F A0    A:   [0] {
0021 06    8:     OBJECT IDENTIFIER ‘1 2 840 10045 3 1 1‘
            :     }
002B A1   34:   [1] {
002D 03   32:     BIT STRING 0 unused bits
            :       04 6B 79 BB 17 F6 37 35 E5 A8 E6 8F 6C BE 8D B9
            :       AF AD 87 B0 9F 5E BA 6F 45 F3 20 29 AD 15 AC 72
            :       5C 5A 29 EC A3 30 03 AB 70 AA 1A 94 2E F8 5B 12
            :       5B
            :     }
            :   }

3.PKCS#8 格式

openssl pkcs8 -topk8 -in ec_key.pem -inform PEM -out pkcs8_ec.key -outform DER -nocrypt

DER转PKCS8格式

openssl pkcs8 -topk8 -in ec_der.key -inform DER -out pkcs8_ec2.key -outform DER -nocrypt

---------------------------------------------------------------------

0000 30   6F: SEQUENCE {
0002 02    1:   INTEGER 0
0005 30   13:   SEQUENCE {
0007 06    7:     OBJECT IDENTIFIER ecPublicKey (1 2 840 10045 2 1)
0010 06    8:     OBJECT IDENTIFIER ‘1 2 840 10045 3 1 1‘
            :     }
001A 04   55:   OCTET STRING
            :     30 53 02 01 01 04 18 1A 95 B6 FE 96 F6 49 1E 1C
            :     C5 91 BD 8B 26 53 F0 7B 3B 0C 2F 50 75 BC 80 A1
            :     34 03 32 00 04 6B 79 BB 17 F6 37 35 E5 A8 E6 8F
            :     6C BE 8D B9 AF AD 87 B0 9F 5E BA 6F 45 F3 20 29
            :     AD 15 AC 72 5C 5A 29 EC A3 30 03 AB 70 AA 1A 94
            :     2E F8 5B 12 5B
            :   }
时间: 2024-10-27 17:53:41

PKCS8密钥格式的相关文章

.NET与JAVA RSA密钥格式转换

一.该篇内容用于记录.net和Java之间,RSA公密钥的转换 using Org.BouncyCastle.Asn1.Pkcs; using Org.BouncyCastle.Asn1.X509; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Math; using Org.BouncyCastle.Pkcs; using Org.BouncyCastle.Security; using Org.BouncyC

JAVA,NET RSA密钥格式转换

JAVA和NET RSA密钥格式相互转换(公钥,私钥) 不多说直接上代码,需要引用开源类库BouncyCastle.Crypto.dll 也可以在这里下载http://downloads.bouncycastle.org/csharp/bccrypto-net-1.7-bin.zip 以下为转化代码 1 using System; 2 using System.Xml; 3 using Org.BouncyCastle.Asn1.Pkcs; 4 using Org.BouncyCastle.As

java解析密钥格式

import java.io.StringReader; import org.bouncycastle.asn1.ASN1Sequence; import org.bouncycastle.asn1.DERBitString; import org.bouncycastle.asn1.DEREncodable; import org.bouncycastle.asn1.DERObjectIdentifier; import org.bouncycastle.asn1.DEROctetStrin

.NET Core RSA密钥的xml、pkcs1、pkcs8格式转换和JavaScript、Java等语言进行对接

众所周知在.NET下的RSA类所生成的密钥为Xml格式,而其他语言比如java一般使用pkcs8格式的密钥,JavaScript一般使用pkcs1格式.我们在开发过程中很可能遇到需要与其他语言开发的api进行对接,如果遇到RSA加密解密,我们肯定需要保证key是相同的,才能保证数据的正确处理,我们肯定需要对密钥进行转换,下面我将我自己的使用经验分享给大家. pkcs1和pkcs8的操作借助了开源项目bouncycastle RSAUtil 项目 RSAUtil 项目是.NET Core下RSA算

全面解决.Net与Java互通时的RSA加解密问题,使用PEM格式的密钥文件

一.缘由 RSA是一种常用的非对称加密算法.所以有时需要在不用编程语言中分别使用RSA的加密.解密.例如用Java做后台服务端,用C#开发桌面的客户端软件时.由于 .Net.Java 的RSA类库存在很多细节区别,尤其是它们支持的密钥格式不同.导致容易出现“我加密的数据对方不能解密,对方加密的数据我不能解密,但是自身是可以正常加密解密”等情况.虽然网上已经有很多文章讨论 .Net与Java互通的RSA加解密,但是存在不够全面.需要第三方dll.方案复杂 等问题.于是我仔细研究了这一课题,得到了一

RSA密钥之C#格式与Java格式转换

前言 最近由于项目需求,服务端由c#编写,客户端由java编写.通信数据使用RSA非对称加密.但是java和c#生成的密钥格式是不一样的,所以需要转换格式才可以正常使用.网上搜到使用java进行格式转换的代码(如:http://blog.csdn.net/road2010/article/details/40071881 ),本文将给出一种c#的实现方法. 密钥格式 java密钥格式如下: 私钥: MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBA

密码学应用(DES,AES, MD5, SHA1, RSA, Salt, Pkcs8)

目录 一.数据加密标准 - Data Encryption Standard(DES) 二.高级加密标准 - Advanced Encryption Standard(AES) 三.消息摘要算法第五版 - Message-Digest Algorithm 5(MD5) 四.安全哈希算法 - Secure Hash Algorithm(SHA1) 五.公钥加密算法(RSA) 六.干扰项 - 盐(Salt) 七.RSA密钥格式Pkcs8 八.源码下载 数据加密标准 - Data Encryption

关于pkcs8 与 rsa 互转的一个坑

其实最主要就2条命令(环境为centos6.5 已安装openssl openssl-devel 这2个包): pkcs8转rsa: openssl rsa -in pkcs8密钥 -out rsa密钥 rsa转pkcs8: openssl pkcs8 -topk8 -inform PEM -in rsa密钥 -outform PEM -nocrypt -out pkcs8密钥 但是坑的地方是格式 看个例子(pkcs8转rsa): 假设开发给过来一个密钥 [[email protected] t

openssl -- RSA秘钥格式 PEM/PKCS#8

1.PEM私钥格式文件 -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY----- 2. PKCS8私钥格式格式 -----BEGIN PRIVATE KEY----- -----END PRIVATE KEY----- 2. PEM公钥格式文件 -----BEGIN PUBLIC KEY----- -----END PUBLIC KEY----- 3. PEM RSAPublicKey公钥格式文件 -----BEGIN RSA P