2011-08-20 54 views
0

我想在我的数据库表中存储一些字符串的哈希值。为此我创建了一个类型为varchar(64)的列。我生成这样的哈希值:为什么`print hashlib.sha224(some_string).digest()`与`repr()`不同?

>>> thehash = hashlib.sha224(some_string).digest() 

现在我认识到

>>> print thehash 

是不一样的

>>> thehash 

(到现在为止,我知道>>> print 'test'>>> 'test'之间的区别... :-))我很困惑现在应该存储哪个部分。 repr()或其他版本?

回答

5

都没有。您应该调用.hexdigest()方法,并将其存储。

+0

如果我可能会问:'diggest()'和'hexdiggest'有什么区别?我为什么要存储后者? – Aufwind

+4

'.digest()'将散列作为二进制数据返回,而'.hexdigest()'返回以十六进制数字编码的散列。你需要后者,因为它几乎总是可打印,可移动和一致的。 –

+0

谢谢@Ignacio! – Aufwind

相关问题