Вопрос по python – M2Crypto - импортировать ключи из нестандартного файла?

0

У меня есть файл с показателем и модулем. Они не в формате pem, xml или der, а просто в значениях, записанных в их смещениях.

Как я могу сделать из них открытый ключ с помощью M2Crypto? У меня также есть закрытый ключ в том же формате. Мне удалось использовать код, который кто-то разместил здесь в Stackoverflow, чтобы сгенерировать PEM-файл с php, но это кажется крайне нелепым способом сделать это.

Это тоже не разовая вещь, мне нужно иметь возможность читать открытую экспоненту и модуль из файлов в этом формате, чтобы проверить подпись.

Ваш Ответ

1   ответ
1

elongnlong

import M2Crypto
key = M2Crypto.RSA.new_pub_key((
    M2Crypto.m2.bn_to_mpi(M2Crypto.m2.hex_to_bn(hex(e)[2:])),
    M2Crypto.m2.bn_to_mpi(M2Crypto.m2.hex_to_bn(hex(n)[2:])),
    ))

0xA45E0x.

import M2Crypto
from binascii import hexlify 
e = f.read(4)
n = f.read(0x80)
key = M2Crypto.RSA.new_pub_key((
    M2Crypto.m2.bn_to_mpi(M2Crypto.m2.hex_to_bn(hexlify(e))),
    M2Crypto.m2.bn_to_mpi(M2Crypto.m2.hex_to_bn(hexlify(n))),
    ))

new_pub_key

OpenSSL's MPINT format - 4-byte big-endian bit-count followed by the appropriate number of bits

00010001000003010001

Unformatted:
\x23\x24\x25\x26
Formatted:
\x00\x00\x00\x04\x23\x24\x25\x26
Explanation:
String left as is and count of bytes packed in

Unformatted:
\x00\x23\x55\x35
Formatted:
\x00\x00\x00\x03\x23\x55\x35
Explanation:
leading zero byte removed, byte count now 3

Unformatted:
\x80\x43\x55\x27
Formatted:
\x00\x00\x00\x05\x00\x80\x43\x55\x27
Explanation:
leading zero byte added because \x80 is negative

Unformatted:
\x00\xff\x43\x23
Formatted:
\x00\x00\x00\x04\x00\xff\x43\x23
Explanation:
Leading zero byte left because \xff is negative

Unformatted:
\x23\x53\66\x00
Formatted:
\x00\x00\x00\x04\x23\x53\66\x00
Explanation:
Trailing zero byte left in string

Похожие вопросы