LINUX.ORG.RU

История изменений

Исправление 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 возможных.