Почему строка base64, вычисляемая из командной строки, отличается от строки base64, вычисляемой с помощью curl? - PullRequest
4 голосов
/ 23 января 2010

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

Итак, если я выполню это, вы увидите продукт кодировки base64:

echo 'host@mail.com:password' | openssl enc -base64
aG9zdEBtYWlsLmNvbTpwYXNzd29yZAo=

Теперь, если я сделаю запрос скручивания:

curl -v -u host@mail.com:password https://
aG9zdEBtYWlsLmNvbTpwYXNzd29yZA==

Вы заметите, что строки base64 НЕ совпадают .. ха-ха, что? Первая командная строка base64 фактически неверна - если вы подставите ее в запрос, произойдет сбой. ТАК - базовый дайджест НЕ действительно использует строку base64? Я замечаю, что всегда делает o = вместо == в конце строки ...

А идеи?

РЕДАКТИРОВАТЬ: Итак, это был завершающий перевод новой строки из эха: -n не выводить завершающий символ новой строки

Спасибо!

1 Ответ

7 голосов
/ 23 января 2010
>>> 'aG9zdEBtYWlsLmNvbTpwYXNzd29yZA=='.decode('base64')
'host@mail.com:password'
>>> 'aG9zdEBtYWlsLmNvbTpwYXNzd29yZAo='.decode('base64')
'host@mail.com:password\n'

Попробуйте echo -n.

...