Я должен прочитать закрытый ключ RSA в python и получить исключение «Неверное заполнение» для закрытого ключа pem, которое должно быть допустимым.
rsa_p_file = open(rsa_p_filename, "r")
content = rsa_p_file.read()
rsa_p = RSA.importKey(content)
Теперь, чтобы найти проблему, я экспериментировал с другим файлом pem, для которого он работает. Этот файл pem заканчивается на
8YPmbfUbUcCj6CQfIcSZcg==
-----END PRIVATE KEY-----
Насколько мне известно, = в конце являются байтами заполнения, чтобы сделать общую длину base64 кратной 4. В этом случае общая длина равна 1624, так что все в порядке.
Однако, когда я удаляю последнюю букву "g" и заменяю ее на "="
8YPmbfUbUcCj6CQfIcSZc===
-----END PRIVATE KEY-----
Это дает исключение:
Error: Incorrect padding
Traceback:
Traceback (most recent call last):
File "app.py", line 204, in t1_process
meters = extract.parseShipmentFile(ifile, pkpath, serials)
File "D:\Siemens\Projects\DLMS_becom\code\python\shipment\extract.py", line 146, in parseShipmentFile
rsa_p = RSA.importKey(content)
File "C:\Users\atw11a92\AppData\Local\Programs\Python\Python36\lib\site-packages\Crypto\PublicKey\RSA.py", line 736, in import_key
(der, marker, enc_flag) = PEM.decode(tostr(extern_key), passphrase)
File "C:\Users\atw11a92\AppData\Local\Programs\Python\Python36\lib\site-packages\Crypto\IO\PEM.py", line 168, in decode
data = a2b_base64(b(''.join(lines[1:-1])))
binascii.Error: Incorrect padding
Почему заполнение все еще некорректно, потому что общая длина% 4 снова равна 0?