Mam moduł publiczny & wykładnik klucza publicznego RSA osadzony w pliku binarnym, a ja próbuję wyodrębnić cały obiekt blob i utworzyć użyteczny. klucz publiczny pem.jak przekonwertować surowy moduł i wykładnik na klucz publiczny RSA (format .pem)
Obecnie rozpakowuję pełne 260 bajtów (4 bajty dla wykładnika, 256 bajtów dla modułu) i kodowanie jako base64. Robię to za pomocą następującego polecenia powłoki:
tail -c $((filesize - start_of_key_data)) filename | head -c $size_of_key_data | base64 > outkey
To daje mi następujący ciąg:
<<<<<< 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=
Teraz, kiedy biorę parę kluczy key.pem że moduł & wykładnik pierwotnie były wyodrębnione z i wyświetlić część publicznego podobnie jak
openssl rsa -in key.pem -pubout -out pubkey.pem
uzyskać ten ciąg (i pominięto nagłówku & linie stopki:
<<<<<<<<< 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
Można zobaczyć, że kluczem dane które zostały wyodrębnione i base64 zakodowany sam jest faktycznie obecne w danych z obowiązującymi kluczowych danych publicznych wydobytych z key.pem przy użyciu OpenSSL. Jednakże istnieją 45 znaków na początku, że moja własna ekstrakcji danych nie posiada -
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
a ostatnie 8 znaków różnią.
ZwIDAQAB
Czy ktoś może doradzić, jak przekonwertować moduł i wykładnik na użyteczny klucz publiczny?
(celem jest, aby zrobić to w skrypcie bash, python lub C nie widziałem jak wielu sugeruje.)
wspaniała odpowiedź! –