Я написал эти служебные функции:
import base64
def der2str(der):
return bin2str( base64.encodebytes(der) )
def str2der(str_):
return base64.b64decode( str2bin(str_) )
def bin2str(binary):
return binary.decode('utf8')
def str2bin(str_):
return str_.encode('utf8')
Я запускаю:
if __name__ == '__main__':
test = 'MIIEowIBAAKCAQEA6cVU+6GZyr1jaxvJcLEdRb9cicL/4Soe/HqN+gE/UdM5C71aG6HhNSplj1qi\nX8Abffen'
print(test)
print(der2str(str2der(test)))
, но вывод:
MIIEowIBAAKCAQEA6cVU+6GZyr1jaxvJcLEdRb9cicL/4Soe/HqN+gE/UdM5C71aG6HhNSplj1qi
X8Abffen
MIIEowIBAAKCAQEA6cVU+6GZyr1jaxvJcLEdRb9cicL/4Soe/HqN+gE/UdM5C71aG6HhNSplj1qi
X8Abffen
Почему я получаю эти дополнительные две новые строки на втором отпечатке?
[EDIT]
В соответствии с помеченным ответом, использование return bin2str( base64.b64encode(der) )
работает нормально, пока входная строка test
делает не содержит '\n'
.
Если кому-то нужны переводы строк, строка должна заканчиваться на '\n'
, чтобы утверждение assert(test == der2str(str2der(test)))
прошло.