Php sha2散列字段需要varchar 32还是64字段?

Php sha2散列字段需要varchar 32还是64字段?,php,mysql,sha256,Php,Mysql,Sha256,据我所知,sha2生成256位哈希 256bit/8=32字节 因此,它应该只接受数据库中的varchar32字段。但我看到一篇文章说sah2数据库字段需要数据库中的varchar64字段。这是真的吗?有人能解释一下吗 哈希通常表示为十六进制字符串: string(64) "316a2017faa1ee410aadfb159097b8af260a258aa4210c550844cab89083111d" 在本例中,SHA256是64字节。但是,您可以选择以二进制形式存储它。这将占用32字节的一

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

256bit/8=32字节


因此,它应该只接受数据库中的varchar32字段。但我看到一篇文章说sah2数据库字段需要数据库中的varchar64字段。这是真的吗?有人能解释一下吗

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

string(64) "316a2017faa1ee410aadfb159097b8af260a258aa4210c550844cab89083111d"
在本例中,SHA256是64字节。但是,您可以选择以二进制形式存储它。这将占用32字节的一半空间,但会使其在数据库外壳中无法读取:

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

存储为64字节字符串还是32字节二进制取决于您。

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

string(64) "316a2017faa1ee410aadfb159097b8af260a258aa4210c550844cab89083111d"
在本例中,SHA256是64字节。但是,您可以选择以二进制形式存储它。这将占用32字节的一半空间,但会使其在数据库外壳中无法读取:

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

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

使用varchar64或string64。SHA-256需要64个字符来表示256位,它是用十六进制表示的,因此每个数字表示4位,即256/4=64。

使用varchar64或string64。您需要64个字符来表示SHA-256中的256位,它以十六进制表示,因此每个数字表示4位,即256/4=64。

您不打算将其用于密码存储,是吗?您不打算将其用于密码存储,是吗?谢谢,泰语是一个很好的答案。如果你能给我一些关于散列算法的参考资料,我将非常感谢你。我不需要理解算法程序。我只想知道正确的输入长度、输出长度等。这将告诉您哪些算法在您的机器上可用。然后通过hash$algo,'foo'运行这些函数,看看输出有多大。谢谢。但是,我在php中使用过河豚。但是,当我的盐不够长的时候,我不得不面对一些问题。因此,我阅读了php.net网站。但我找不到任何答案。在那之后,经过长时间的努力,我找到了原因!!这就是为什么我要求有知识的人提供适当的参考!!100种纯文本表示方式中有99种要好得多。二进制数据令人讨厌,没有什么比SELECT*FROM表更让DBA沮丧的了。。。类型查询中有太多的垃圾二进制数据,以至于终端被置乱,因为它不小心将这些数据解释为控制代码。今天的硬盘太大了,即使是1TB的硬盘也不到80美元,SSD也不到500美元,所以几乎没有理由为了每行节省几个字节而让生活变得困难。@tadman这不是MYSQL类型,这是var_dump的输出-只是为了显示长度,而不是作为模式指南。谢谢,Thai是一个很好的答案。如果你能给我一些关于散列算法的参考资料,我将非常感谢你。我不需要理解算法程序。我只想知道正确的输入长度、输出长度等。这将告诉您哪些算法在您的机器上可用。然后通过hash$algo,'foo'运行这些函数,看看输出有多大。谢谢。但是,我在php中使用过河豚。但是,当我的盐不够长的时候,我不得不面对一些问题。因此,我阅读了php.net网站。但我找不到任何答案。在那之后,经过长时间的努力,我找到了原因!!这就是为什么我要求有知识的人提供适当的参考!!100种纯文本表示方式中有99种要好得多。二进制数据令人讨厌,没有什么比SELECT*FROM表更让DBA沮丧的了。。。类型查询中有太多的垃圾二进制数据,以至于终端被置乱,因为它不小心将这些数据解释为控制代码。今天的硬盘太大了,即使是1TB的硬盘也不到80美元,SSD也不到500美元,所以几乎没有理由为了每行节省几个字节而让生活变得困难。@tadman这不是MYSQL类型,这是var_dump的输出-只是为了显示长度,而不是作为模式指南。