证书中密钥标识符计算

下载国家根证书中心(SM2)根证书:

        根证书(MIIBszCCAVegAwIBAgIIaeL+wBcKxnswDAYIKoEcz1UBg3UFADAuMQswCQYDVQQGEwJDTjEOMAwGA1UECgwFTlJDQUMxDzANBgNVBAMMBlJPT1RDQTAeFw0xMjA3MTQwMzExNTlaFw00MjA3MDcwMzExNTlaMC4xCzAJBgNVBAYTAkNOMQ4wDAYDVQQKDAVOUkNBQzEPMA0GA1UEAwwGUk9PVENBMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEMPCca6pmgcchsTf2UnBeL9rtp4nw+itk1Kzrmbnqo05lUwkwlWK+4OIrtFdAqnRTV7Q9v1htkv42TsIutzd126NdMFswHwYDVR0jBBgwFoAUTDKxl9kzG8SmBcHG5YtiW/CXdlgwDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFEwysZfZMxvEpgXBxuWLYlvwl3ZYMAwGCCqBHM9VAYN1BQADSAAwRQIgG1bSLeOXp3oB8H7b53W+CKOPl2PknmWEq/lMhtn25HkCIQDaHDgWxWFtnCrBjH16/W3Ezn7/U/Vjo5xIpDoiVhsLwg==)

命令说明

wget  -nv "http://www.rootca.gov.cn/queryDownloadContentByIdAction?certPathId=

402849e647ecf4c30147ed60d7b40007&timestampt=Tue%20Mar%2001%202022%

2019:54:53%20GMT+0800%20(%E4%B8%AD%E5%9B%BD%E6%A0%87%E5%

87%86%E6%97%B6%E9%97%B4)"  -O "社会公众应用根证书(SM2).cer"

下载根证书
cat 社会公众应用根证书(SM2).cer查看文件内容

==>

 

base64解码:

命令说明
base64 -d "社会公众应用根证书(SM2).cer"    1>"社会公众应用根证(SM2).der"base64 解码

==>

gmssl解析证书:

命令说明
gmssl x509 -in "社会公众应用根证书(SM2).der" -inform der -text -noout解析查看证书

密钥标识符(04:30:f0:9c:6b:aa:66:81:c7:21:b1:37:f6:52:70:5e:2f:da:ed:a7:89:f0:fa:2b:64:d4:ac:eb:

                 99:b9:ea:a3:4e:65:53:09:30:95:62:be:e0:e2:2b:b4:57:40:aa:74:53:57:b4:3d:bf:58:6d:92                :fe:36:4e:c2:2e:b7:37:75:db)

==>

 

将证书公钥写成文件:

命令说明

echo -en "\x04\x30\xf0\x9c\x6b\xaa\x66\x81\xc7\x21\xb1\x37\xf6\x52\x70\x5e\x2f\xda

\xed\xa7\x89\xf0\xfa\x2b\x64\xd4\xac\xeb\x99\xb9\xea\xa3\x4e\x65\x53\x09\x30\x95

\x62\xbe\xe0\xe2\x2b\xb4\x57\x40\xaa\x74\x53\x57\xb4\x3d\xbf\x58\x6d\x92\xfe\x36

\x4e\xc2\x2e\xb7\x37\x75\xdb" 1>pubkey.dat

裸公钥写文件
hexdump -C pubkey.dat查看16进制

==>

 

SHA1计算密钥标识符:

命令说明
sha1sum pubkey.dat 计算SHA1
gmssl dgst -hex -sha1 pubkey.dat计算SHA1

 

计算出来的SHA1值与证书中的密钥标识符一致.

        (4c32b197d9331bc4a605c1c6e58b625bf0977658)

### 证书密钥存储的空间需求分析 证书密钥的存储空间需求取决于多个因素,包括加密算法的选择、密钥长度、证书结构以及存储方式等。以下是详细的分析: #### 1. 密钥存储空间需求 密钥的存储空间主要由其长度决定。例如,AES 对称加密算法通常使用 128 位、192 位或 256 位密钥[^1]。这些密钥的存储空间需求如下: - 128 位密钥需要 16 字节(128 ÷ 8 = 16)。 - 192 位密钥需要 24 字节。 - 256 位密钥需要 32 字节。 对于非对称加密算法(如 RSA 或 ECC),密钥长度更长,因此存储需求更大。以 RSA 为例: - 2048 位 RSA 密钥需要 256 字节(2048 ÷ 8 = 256)。 - 4096 位 RSA 密钥需要 512 字节。 相比之下,椭圆曲线加密(ECC)的密钥长度较短,但安全性相当。例如: - 256 位 ECC 密钥仅需 32 字节。 此外,私钥可能需要额外的元数据存储,例如密钥标识符、创建时间、过期时间等信息[^4]。 #### 2. 证书存储空间需求 数字证书通常包含公钥、主体信息、颁发者信息、有效期以及其他扩展字段。证书的大小主要取决于以下几个方面: - **公钥大小**:证书中嵌入的公钥长度直接影响证书大小。例如,2048 位 RSA 公钥需要约 256 字节,而 256 位 ECC 公钥仅需 32 字节。 - **签名算法**:证书的签名部分也会增加存储需求。例如,SHA-256 签名的长度为 32 字节。 - **证书扩展字段**:某些证书可能包含扩展字段(如 SAN、CRL 分布点等),这会进一步增加证书大小。 一般来说,一个标准的 X.509 数字证书大小范围在几百字节到几 KB 之间。例如: - 使用 RSA 2048 位公钥的证书通常约为 1 KB。 - 使用 ECC 256 位公钥的证书通常小于 1 KB。 #### 3. 密钥管理系统(KMS)中的存储需求 现代密钥管理系统(KMS)不仅存储密钥本身,还存储与密钥相关的元数据。这些元数据可能包括密钥用途、访问权限、生命周期状态等信息[^3]。因此,实际存储需求可能会超出密钥本身的大小。 例如,AWS KMS 或 Google Cloud KMS 中的每个密钥可能需要额外的几十字节到几百字节用于存储元数据。 --- ### 示例代码:计算密钥证书存储需求 以下是一个简单的 Python 脚本,用于估算不同长度密钥证书的存储需求: ```python def calculate_key_storage(key_length_bits): return key_length_bits // 8 def calculate_certificate_storage(public_key_length_bits, signature_length_bytes=32, metadata_size_bytes=100): public_key_size = public_key_length_bits // 8 return public_key_size + signature_length_bytes + metadata_size_bytes # 示例:AES 和 RSA 密钥存储需求 aes_256_storage = calculate_key_storage(256) rsa_2048_storage = calculate_key_storage(2048) # 示例:X.509 证书存储需求 certificate_rsa_2048_storage = calculate_certificate_storage(2048) certificate_ecc_256_storage = calculate_certificate_storage(256) print(f"AES 256 位密钥存储需求: {aes_256_storage} 字节") print(f"RSA 2048 位密钥存储需求: {rsa_2048_storage} 字节") print(f"RSA 2048 位证书存储需求: {certificate_rsa_2048_storage} 字节") print(f"ECC 256 位证书存储需求: {certificate_ecc_256_storage} 字节") ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值