刚刚为了我自己的目的而做了这件事,我会把它写下来,而这一切都在我头脑中......
"官方"密钥ID(即X509证书中"X509v3主题密钥标识符"扩展名的内容)是DER编码的ASN.1序列的SHA1哈希,由RSA公钥的模数和指数组成. .它需要拼凑三个不同的RFC和一些实验来提出它,但这就是它的工作原理.
一些用于编码的Ruby代码如下所示 - 在stdin上提供RSA公钥或私钥:
require 'openssl'
pkey = OpenSSL::PKey::RSA.new($stdin.read).public_key
seq = OpenSSL::ASN1::Sequence([OpenSSL::ASN1::Integer.new(pkey.n),
OpenSSL::ASN1::Integer.new(pkey.e)])
puts Digest::SHA1.hexdigest(seq.to_der).upcase.scan(/../).join(':')
Run Code Online (Sandbox Code Playgroud)
在不同的格式(PGP、SSH、X.509 证书)中,密钥 ID 具有不同的含义。SSH 和 X.509 都没有密钥 ID 的“专用”概念,但有些人使用这个术语(包括他们的软件)——在这种情况下,它通常是公钥或整个证书的哈希值。
更新:评论提醒我 X.509 证书中存在“密钥标识符”扩展,它们有时被称为密钥 ID。然而,这种情况并不常见 - 通常哈希(有时也称为指纹)被引用为密钥 ID。
| 归档时间: |
|
| 查看次数: |
11165 次 |
| 最近记录: |