История изменений
Исправление olegd, (текущая версия) :
Что это значит?
В приведённом примере:
"{SSHA}%s" % base64.b64encode(hashlib.sha1('%s%s'%(password,salt)).hexdigest()+salt)
На вход — password и salt — текст из командной строки.
hashlib.sha1( ... ).hexdigest() принимает bytes и возвращает текст.
Который надо соединить с текстом salt, и если перед передачей в функцию решил заранее сконвертировать для sha1() — конвертируй обратно.
base64.b64encode( ... ) принимает на вход bytes и возвращает bytes, поэтому полученный текст надо сконвертировать. Или можно было конвертировать только результат hexdigest(), если salt передать в функцию как bytes.
Для объединения с '{SSHA}' полученный результат b64encode() надо снова преобразовать в текст. Или складывать с b'{SSHA}', а потом преобразовать сумму, так как итог должен быть текстом.
Итого 4 раза из 6 возможных.
P.S. Задача облегчается тем, что весь текст — 7-битный ASCII. То есть преобразования, по сути, только меняют тип.
Исправление olegd, :
Что это значит?
В приведённом примере:
"{SSHA}%s" % base64.b64encode(hashlib.sha1('%s%s'%(password,salt)).hexdigest()+salt)
На вход — password и salt — текст из командной строки.
hashlib.sha1( ... ).hexdigest() принимает bytes и возвращает текст.
Который надо соединить с текстом salt, и если перед передачей в функцию решил заранее сконвертировать для sha1() — конвертируй обратно.
base64.b64encode( ... ) принимает на вход bytes и возвращает bytes, поэтому полученный текст надо сконвертировать. Или можно было конвертировать только результат hexdigest(), если salt передать в функцию как bytes.
Для объединения с '{SSHA}' полученный результат b64encode() надо снова преобразовать в текст. Или складывать с b'{SSHA}', а потом преобразовать сумму, так как итог должен быть текстом.
Итого 4 раза из 6 возможных.
Исходная версия olegd, :
Что это значит?
В приведённом примере:
«{SSHA}%s» % base64.b64encode(hashlib.sha1('%s%s'%(password,salt)).hexdigest()+salt)
На вход — password и salt — текст из командной строки.
hashlib.sha1( ... ).hexdigest() принимает bytes и возвращает текст.
Который надо соединить с текстом salt, и если перед передачей в функцию решил заранее сконвертировать для sha1() — конвертируй обратно.
base64.b64encode( ... ) принимает на вход bytes и возвращает bytes, поэтому полученный текст надо сконвертировать. Или можно было конвертировать только результат hexdigest(), если salt передать в функцию как bytes.
Для объединения с «{SSHA}» полученный результат b64encode() надо снова преобразовать в текст. Или складывать с b'{SSHA}', а потом преобразовать сумму, так как итог должен быть текстом.
Итого 4 раза из 6 возможных.