为什么生成的RSA1024公钥是162个字节

为什么java生成的RSA1024公钥是162byte,不应该是128byte吗?

发卡行公钥证书是由发卡行产生RSA密钥对,公钥部分传给CA,由CA对公钥部分信息签名(用CA私钥加密)得到的数据就是发卡行公钥证书
过程如下:发卡行把以下数据给CA
02//证书格式
622800FF//发卡行标识(主账号最左面的3-8个数字)
1230//证书失效日期
000001//证书序列号
01//哈希算法标识
01//发卡行公钥算法标识
80//发卡行公钥长度
01//发卡行公钥指数长度
//发卡行公钥模数的完整数据128个字节
B4AB1DC9B46B8745C26703A7CEFF49522922F18DABFBBD0AA3492FA1A893A78C
1766226561F7895CA938FFDF53838E5863E46D11D60B98104125174D7A0DF09F
AF7C255DDC5A51494D60449B8A7524EE33955363C7CB26CD679A05EBC193DEF1
65FD9026C33952A5F1C7C8A917A34DC2A9853973FD139F821D068A07267E8AC5
CA得到以上数据,对以上数据HASH运算得到 20个字节的哈希值
500DC25210B5F2ADDF14429F2A9F3CB781A5717E

然后用CA私钥对以下数据加密
6A//恢复数据头
02//证书格式
622800FF//发卡行标识(主账号最左面的3-8个数字)
1230//证书失效日期
000001//证书序列号
01//哈希算法标识
01//发卡行公钥算法标识
80//发卡行公钥长度
01//发卡行公钥指数长度
//下面是发卡行公钥模数的最左边92个字节数据
//(计算哈希结果的时候还要加上后续的36个字节公钥余项,再加上公钥指数03)
B4AB1DC9B46B8745C26703A7CEFF49522922F18DABFBBD0AA3492FA1A893A78C
1766226561F7895CA938FFDF53838E5863E46D11D60B98104125174D7A0DF09F
AF7C255DDC5A51494D60449B8A7524EE33955363C7CB26CD679A05EB
//下面是哈希结果
500DC25210B5F2ADDF14429F2A9F3CB781A5717E

得到发卡行公钥证书:
2B0CB3F653A15F5DD6A30D09F47E9BB36747B52C7B49499416FF12E5707FDFDB
CF8B8F05703B86BDC0B322A8943F801EEED8FAD8A96B533D742DBF36410548C0
9EBE9C317C98542BF694C4143A3813F3ABDF5C3AD23BA26B0B23A4D52455E11F
6F0D1EE0435C69DD4B41E38C9D855A03E194C5321152879375849401BB415166
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-12-27
因为你使用了getEncoded();方法进行了编码,getEncoded()是X509的编码格式。
相似回答