преобразовать ключ в MIME-кодированную форму в Python - PullRequest
0 голосов
/ 14 сентября 2009

Мне нужно конвертировать ключ в MIME-кодированную форму, которая в настоящее время поставляется в формате (ascii armored) radix 64. Для этого мне нужно получить этот формат radix64 в двоичном виде, а также удалить его заголовок и контрольную сумму, чем coversion в формате MIME, но я не нашел ни одного метода, который мог бы выполнить это преобразование.

f = urllib.urlopen('http://pool.sks-keyservers.net:11371/pks/lookup?op=get&search= 0x58e9390daf8c5bf3') #Retrieve the public key from PKS

data = f.read()
decoded_bytes = base64.b64decode(data)
print decoded_bytes

Я использовал метод base64.b64decode, и он выдает следующую ошибку:

Traceback (most recent call last):
  File "RetEnc.py", line 12, in ?
    decoded_bytes = base64.b64decode(data)
  File "/usr/lib/python2.4/base64.py", line 76, in b64decode
    raise TypeError(msg)
TypeError: Incorrect padding

Почему я получаю эту TypeError: Incorrect padding ошибку и как я могу это исправить?

1 Ответ

0 голосов
/ 14 сентября 2009

Для начала, когда вы используете действительное значение search («jay» возвращает ошибку с указанием «слишком много значений»), вы получите HTML-страницу, с которой вам нужно извлечь фактический ключ. Пытаясь найти значение «jaysh», я получаю следующий ответ:

<code>>>> print urllib.urlopen('http://pool.sks-keyservers.net:11371/pks/lookup?op=get&search=jaysh').read()
<html><head><title>Public Key Server -- Get ``jaysh ''</title></head>
<body><h1>Public Key Server -- Get ``jaysh ''</h1>
<pre>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: SKS 1.1.1

mQGiBEpz7VIRBADAt9YpYfYHJeGA6d+G261FHW1uA0YXltCWa7TL6JnIsuxvh9vImUoyMJd6
1xEW4TuROTxGcMMiDemQq6HfV9tLi7ptVBLf/8nUEFoGhxS+DPJsy46WmlscKHRIEdIkTYhp
uAIMim0q5HWymEqqAfBLwJTOY9sR+nelh0NKepcCqwCgvenJ2R5UgmAh+sOhIBrh3OahZEED
/2sRGHi4xRWKePFpttXfb2hry2/jURPae/wYfuI6Xw3k5EO593veGS7Zyjnt+7mVY1N5V/ey
rfXaS3R6GsByG/eRVzRJGU2DSQvmF+q2NC6v2s4KSzr5CVKpn586SGUSg/aKvXY3EIrpvAGP
rHum1wt6P9m9kr/4X8SdVhj7Jti6A/0TA8C2KYhOn/hSYAMTmhisHan3g2Cm6yNzKeTiq6/0
ooG/ffcY81zC6+Kw236VGy2bLrMLkboXPuecvaRfz14gJA9SGyInIGQcd78BrX8KZDUpF1Ek
KxQqL97YRMQevYV89uQADKT1rDBJPNZ+o9f59WT04tClphk/quvMMuSVILQaamF5c2ggPGph
eXNocmVlQGdtYWlsLmNvbT6IZgQTEQIAJgUCSnPtUgIbAwUJAAFRgAYLCQgHAwIEFQIIAwQW
AgMBAh4BAheAAAoJEFjpOQ2vjFvzS0wAn3vf1A8npIY/DMIFFw0/eGf0FNekAKCBJnub9GVu
9OUY0nISQf7uZZVyI7kBDQRKc+1SEAQAm7Pink6S5+kfHeUoJVldb+VAlHdf7BdvKjVeiKAb
dFUa6vR9az+wn8V5asNy/npEAYnHG2nVFpR8DTlN0eO35p78qXkuWkkpNocLIB3bFwkOCbff
P3yaCZp27Vq+9182bAR2Ah10T1KShjWTS/wfRpSVECYUGUMSh4bJTnbDA2MAAwUEAIcRhF9N
OxAsOezkiZBm+tG4BgT0+uWchY7fItJdEqrdrROuCFqWkJLY2uTbhtZ5RMceFAW3s+IYDHLL
PwM1O+ZojhvAkGwLyC4F+6RCE62mscvDJQsdwS4L25CaG2Aw97HhY7+bG00TWqGLb9JibKie
X1Lk+W8Sde/4UK3Q8tpbiE8EGBECAA8FAkpz7VICGwwFCQABUYAACgkQWOk5Da+MW/MAAgCg
tfUKLOsrFjmyFu7biv7ZwVfejaMAn1QXEJw6hpvte60WZrL0CpS60A6Q
=tvYU
-----END PGP PUBLIC KEY BLOCK-----

Так что вам нужно смотреть только на ключ, завернутый в теги <pre> HTML.

Кстати, есть и другие проблемы, с которыми вам придется столкнуться, например, возвращаются несколько ключей, потому что вы ищете по «имени», когда вы должны искать по keyID. Например, keyID 0x58E9390DAF8C5BF3 вернет открытый ключ для jaysh и только jaysh, а соответствующий URL-адрес будет http://pool.sks -keyservers.net: 11371 / pks / lookup? Op = get & search = 0x58E9390DAF8C5BF3 .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...