【发布时间】:2015-02-18 12:55:15
【问题描述】:
我将 RSA 公钥的模数和指数嵌入到二进制文件中,我正在尝试提取整个 blob 并创建一个可用的 .pem 公钥。
目前,我正在提取完整的 260 个字节(4 个字节用于指数,256 个字节用于模数) 并编码为base64。我正在使用以下 shell 命令执行此操作:
tail -c $((filesize - start_of_key_data)) filename | head -c $size_of_key_data | base64 > outkey
这给了我以下字符串:
<<<<<< modulus & exponent extracted from binary file, base64-encoded >>>>>>
tZyrQA6cZFJfVm6FyXwtZaLQYg8EecuO+ObrHTwc8JO+XrgnpNAdmlhbAEPxSNnjwhNnbYGYGL4F
vzmnZXzZU71Key42HQPh1k2Zx1UDbrH5ciODKx1ZbuEx8K24SHnL1nY/H75hwhT/ZRRVGQDvYDT+
sgzw2vmV66+dflw1Zs8BLhqjLjczdHvjeVXsDRJ9Mvvd/dhFH8UlTf4JpLGya9nsNIfNBBIf1Lll
RWwCTiEIbaOMgWcLjLV/2tk/j5Dra/oQnVf/2hVsEF/hXEx41YjeEW/warweoDVG7zaxrHEc/k/r
ZCUCZKxf8nBKdqax/gRICvkG6e5xg2GQw0W/ZwABAAE=
现在,当我获取最初从中提取模数和指数的 key.pem 密钥对时,像这样显示公共部分
openssl rsa -in key.pem -pubout -out pubkey.pem
我得到了这个字符串(我省略了页眉和页脚行:
<<<<<<<<< valid public key data extracted from keypair >>>>>>>>>
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtZyrQA6cZFJfVm6FyXwt
ZaLQYg8EecuO+ObrHTwc8JO+XrgnpNAdmlhbAEPxSNnjwhNnbYGYGL4FvzmnZXzZ
U71Key42HQPh1k2Zx1UDbrH5ciODKx1ZbuEx8K24SHnL1nY/H75hwhT/ZRRVGQDv
YDT+sgzw2vmV66+dflw1Zs8BLhqjLjczdHvjeVXsDRJ9Mvvd/dhFH8UlTf4JpLGy
a9nsNIfNBBIf1LllRWwCTiEIbaOMgWcLjLV/2tk/j5Dra/oQnVf/2hVsEF/hXEx4
1YjeEW/warweoDVG7zaxrHEc/k/rZCUCZKxf8nBKdqax/gRICvkG6e5xg2GQw0W/
ZwIDAQAB
你可以看到我自己提取和base64编码的关键数据是 实际存在于使用 openssl 从 key.pem 中提取的有效公钥数据的数据中。 但是开头有 45 个字符,我自己提取的数据没有 -
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
而且最后 8 个字符也不同。
ZwIDAQAB
谁能提供一些关于如何将模数和指数转换为可用公钥的建议?
(目标是在 bash 脚本中执行此操作,而不是我看到的许多建议的 python 或 C。)
【问题讨论】:
标签: bash rsa public-key-encryption