我已经在二进制文件中嵌入了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密钥对,并像这样显示公共部分:
Now, when I take the key.pem keypair that the modulus & exponent were originally extracted from, and display the public portion like so
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语言。)
PyCryto
,而是使用了PyCryptodome
,它是PyCryto
的一个分支,目前仍然非常活跃并被广泛使用。 - undefined