sha2散列字段是否需要varchar 32或64字段?

时间:2017-04-26 17:50:28

标签: php mysql sha256

据我所知sha2生成256位哈希。

256bit / 8 = 32bytes。

所以,它应该只占用数据库中的varchar(32)字段。但我看到一篇文章说sah2数据库字段需要数据库中的varchar(64)字段。真的吗?有人可以解释一下,请!!

2 个答案:

答案 0 :(得分:0)

哈希通常表示为十六进制字符串:

string(64) "316a2017faa1ee410aadfb159097b8af260a258aa4210c550844cab89083111d"

在这种情况下,SHA256是64字节。但是,您可以选择以二进制形式存储它。这将使它占用一半的空间(32个字节),但会使它在数据库shell中不可读:

string(32) "̵9�~Rbgc\�7ME���)Fw�w��E�kc5"

是否存储为64字节字符串或32字节二进制文件取决于您。

答案 1 :(得分:0)

使用varchar(64)或string(64)。您需要64个字符来表示SHA-256中的256位,它以十六进制表示,因此每个数字代表4位,而256/4 = 64。