Синтаксис base64 в Python не работает

Этот код работает в командной строке.

python -c 'import base64,sys; u,p=sys.argv[1:3]; print  base64.encodestring("%s\x00%s\x00%s" % (u,u,p))' user pass

вывод dXNlcgB1c2VyAHBhc3M=

Я пытаюсь заставить это работать в моем сценарии

test = base64.encodestring("{0}{0}{1}").format(acct_name,pw)
print test

выходной ezB9ezB9ezF9

кто-нибудь нет, что я делаю не так? благодарю вас.

2 ответа

Решение

У вас есть ошибка в скобках. Вместо:

test = base64.encodestring("{0}{0}{1}").format(acct_name,pw)

(который сначала кодирует "{0}{0}{1}" в base64, а затем пытается заменить переменные, используя format),

у тебя должно быть

test = base64.encodestring("{0}{0}{1}".format(acct_name,pw))

(который сначала подставляет переменные, используя format а затем кодирует в base64).

Спасибо SZYM я все готово. Это код, который заставляет его работать

test = base64.encodestring("{0}\x00{0}\x00{1}".format(acct_name,pw))

Оказывается, требуется hex \x00, поэтому программа, получающая хэш, знает, где останавливается имя пользователя и начинается пароль. -alF

Другие вопросы по тегам