0

试图理解php 的 hash 方法的raw_data最后一个参数。

文档状态raw_data:

当设置为 TRUE 时,输出原始二进制数据。FALSE 输出小写十六进制。

这将用于什么场景?我们什么时候需要二进制数据与十六进制数据?

4

2 回答 2

1

如果将此变量设置为 true,您将获得二进制结果。这样的结果更小,但有些设备您不能使用它(例如,您不能在 url 中传递它) - 在这种情况下,您可以设置 raw_data=false 以获取一个字符串,其中哈希的每个字节都由两个十六进制数字表示(因此字节 10111001 将表示为 B5)。这种表示可以很容易地转换回二进制序列,并且可以在任何可以使用常规字符串的地方使用,但会更大。

于 2013-10-09T15:03:54.310 回答
1

您可以使用二进制模式将编码从十六进制更改为其他内容,例如

echo base64_encode(hash('md5', 'hello', true));
// XUFAKrxLKna5cZ2REBfFkg==

此外,将原始数据存储在数据库中占用的空间更少;但是,您确实会在可读性上妥协,从数据库中复制/粘贴不再可行。

于 2013-10-09T15:06:44.320 回答