2016-02-22 7 views
0

Я знаю, как получить sha1 из строки, а затем получить дайджест sha1 от него, что является моей целью. Но теперь проблема в том, что у меня уже есть sha1 (который исходит из файла, а не строки), и вы хотите получить из него дайджест sha1 (а base 64 - его кодирование).Python 3.5 конвертировать строку в тип суммы sha1

mysha1 = "FB9BA6614A6AEB7A040881E09A4B8211405831FF" 
print(base64.b64encode(mysha1.digest())) 

и это приводит к

AttributeError: 'str' object has no attribute 'digest' 
+0

Если у вас уже есть SHA1, почему вы пытаетесь переварить его снова? Просто отправьте его: 'base64.b64encode (mysha1)' – BingsF

+0

не так ли? – Aulig

+0

Ну, если вы попытаетесь переварить его, вы в конечном итоге отправите хэш своего хэша. Это то, что вы хотите? – BingsF

ответ

4

Пример с дайджестом и hexdigest:

>>> import hashlib 
>>> d = hashlib.sha1(b'footext') 
>>> d.digest() 
b'f\xf9\x88gI\xfdQK\x8eM\xbd\x9e\x18(\xcf\x860"\xf1\xbf' 
>>> d.hexdigest() 
'66f9886749fd514b8e4dbd9e1828cf863022f1bf' 

Как превратить hexdigest в дайджесте:

>>> bytes.fromhex(d.hexdigest()) 
b'f\xf9\x88gI\xfdQK\x8eM\xbd\x9e\x18(\xcf\x860"\xf1\xbf' 
+0

Извините, но это не то, что я хотел знать (я получил это от поиска уже). Все, что я хочу так просто, как я могу описать это: input sha1 -> output digest sha1 – Aulig

+0

Не знаю, о чем вы говорите. Лучше укажите пример, включая желаемый результат. И * "input sha1 -> output digest sha1" * не просто, а просто загадочная тарабарщина. –