RSA的公钥和私钥的ASN.1编码

RSA的公钥和私钥的ASN.1编码ASN.1 BER编码 https://blog.csdn.net/wzj_whut/article/details/86241935pkcs-1定义ftp://ftp.rsa.com/pub/pkcs/ascii/pkcs-1.aschttps://tools.ietf.org/html/rfc2313https://tools.ietf.org/html/rfc5280X.509中的...
摘要由CSDN通过智能技术生成

ASN.1 BER编码 https://blog.csdn.net/wzj_whut/article/details/86241935
pkcs-1定义
ftp://ftp.rsa.com/pub/pkcs/ascii/pkcs-1.asc
RSA规范 https://tools.ietf.org/html/rfc8017
X509公钥格式 https://tools.ietf.org/html/rfc5280
object identifier查询
http://www.oid-info.com
如果是文件格式的文件(PEM格式), 需要先使用base64解码

公钥格式

X.509中的RSA的公钥定义为

SEQUENCE {
	SEQUENCE {
		OBJECT IDENTIFIER
		rsaEncryption (1 2 840 113549 1 1 1)
		NULL
	}
	BIT STRING, encapsulates {
		SEQUENCE {
			INTEGER
			INTEGER 65537
		}
	}
}

随机生成RSA的公钥如下 (https://github.com/wzjwhut/rsa-theory)

30 82 01 22 30 0d 06 09 2a 86 48 86 f7 0d 01 01
01 05 00 03 82 01 0f 00 30 82 01 0a 02 82 01 01
00 d7 99 7d 64 f1 5e 77 dd a9 c8 fe 3d ea ba 0f
bd 83 56 27 f5 cb 52 78 09 da 60 fb 0f 16 ef b8
3a ed 19 dd c3 73 b1 e7 52 ca d8 82 95 cc 40 df
51 0c 59 26 52 6b 96 48 88 13 0a 78 28 68 3b 00
79 e6 a2 43 36 c2 04 aa 37 b0 77 73 19 ff 33 ec
50 76 45 ad 3b 46 09 29 83 c7 1b 73 d8 f7 f8 a0
f1 e4 e4 d8 ed aa fc 74 a0 5c ce 69 c4 be a8 e7
ac b3 e2 07 9b 90 de a3 94 42 89 85 90 09 58 43
fb ef 0c 05 91 38 67 f8 e1 8d 60 a8 c4 bb 3b 1f
35 1d 6a 17 38 12 50 cf 89 6d c5 27 4a 5f 98 23
df 23 d6 41 f3 ab a2 c1 5a 0d 2f d5 92 0c 3e 93
4e ef 4e 49 7d 0d 39 99 b9 a0 24 2a ce 7b 67 15
a3 df 25 2c ed b1 19 76 e3 41 ab 7f f8 86 fb 88
ed 85 94 2a 43 0d 3f 4d 1f c0 5d e7 af 5c 18 8a
e0 99 bd de ba 78 ec 97 27 ae ca ea 75 be 5f 84
2a 9a 10 c6 fa db cd 25 11 59 2a bf 12 36 02 9c
0d 02 03 01 00 01

总共294字节, 它的格式如下

30     --表示ASN.1的SEQUENCE编码
82 01 22,  --content长度为0x0122, 即290字节, 剩下的所有的数据都是content 
	30   --又是一个sequence
	0d   --长度为13字节
		06   -- Object identifier
		09   --长度为9个字节
		2a   --整数42 = 1*40 +2 , 即 {1, 2}
		86 48  --整数840
		86 f7 0d --整数113549
		01 01 01 ,  --三个整数1
		        --因此, object id是{1 2 840 113549 1 1 1},  官网上查到的pkcs-1的OID=1.2.840.113549.1.1.1
		05 00  -- null
	
		03 --表示bitstring
		82 01 0f  --长度为 271, 剩下的所有数据
			00  --padding的比特数为0.
			30 --sequence
			82 01 0a  --长度266
				02 --整数
				82 01 01 --长度为257,  以下是一个超级大的整数, 为密钥中的n
				00 d7 99 7d 64 f1 5e 77 dd a9 c8 fe 3d ea ba 0f
				bd 83 56 27 f5 cb 52 78 09 da 60 fb 0f 16 ef b8
				3a ed 19 dd c3 73 b1 e7 52 ca d8 82 95 cc 40 df
				51 0c 59 26 52 6b 96 48 88 13 0a 78 28 68 3b 00
				79 e6 a2 43 36 c2 04 aa 37 b0 77 73 19 ff 33 ec
				50 76 45 ad 3b 46 09 29 83 c7 1b 73 d8 f7 f8 a0
				f1 e4 e4 d8 ed aa fc 74 a0 5c ce 69 c4 be a8 e7
				ac b3 e2 07 9b 90 de a3 94 42 89 85 90 09 58 43
				fb ef 0c 05 91 38 67 f8 e1 8d 60 a8 c4 bb 3b 1f
				35 1d 6a 17 38 12 50 cf 89 6d c5 27 4a 5f 98 23
				df 23 d6 41 f3 ab a2 c1 5a 0d 2f d5 92 0c 3e 93
				4e ef 4e 49 7d 0d 39 99 b9 a0 24 2a ce 7b 67 15
				a3 df 25 2c ed b1 19 76 e3 41 ab 7f f8 86 fb 88
				ed 85 94 2a 43 0d 3f 4d 1f c0 5d e7 af 5c 18 8a
				e0 99 bd de ba 78 ec 97 27 ae ca ea 75 be 5f 84
				2a 9a 10 c6 fa db cd 25 11 59 2a bf 12 36 02 9c
				0d 
			   02 --整数
			   03  --就3个字节
			   01 00 01  --数字 65537, , 为RSA密钥中e

私钥格式

密码加密规范 https://tools.ietf.org/html/rfc8018
私钥文件格式

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值