一、hash函数介绍
1、说明
hash ( string $algo , string $data [, bool $raw_output = FALSE ] ) : string
2、参数
参数名 | 参数值 |
---|---|
algo | 要使用的哈希算法,例如:“md5”,“sha256”,“haval160,4” 等。 |
data | 要进行哈希运算的消息 |
raw_output | 设置为 TRUE 输出原始二进制数据, 设置为 FALSE 输出小写 16 进制字符串。 |
3、返回值
如果 raw_output 设置为 TRUE
, 则返回原始二进制数据
表示的信息摘要, 否则返回 16 进制小写字符串格式
表示的信息摘要。
二、使用
1、前言
- hash()的第一个参数有些好像是函数名,那打印的结果是不是一样呢,我们来试一下。
2、md5()比较
- 代码
$string = 123456;
$hashString = hash('md5', $string);
$md5String = md5($string);
echo $hashString . '<br/>' . $md5String;
die;
- 打印
e10adc3949ba59abbe56e057f20f883e
e10adc3949ba59abbe56e057f20f883e
- 结果
返回的是16 进制小写字符串格式
,并且结果一致
3、sha1()比较
- 代码
$string = 123456;
$hashString = hash('sha1', $string);
$sha1String = sha1($string);
echo $hashString . '<br/>' . $sha1String;
die;
- 打印
7c4a8d09ca3762af61e59520943dc26494f8941b
7c4a8d09ca3762af61e59520943dc26494f8941b
- 结果
返回的是16 进制小写字符串格式
,并且结果一致
4、如果要返回 原始二进制呢
hash()的第3
个参数设置为true
(默认为false
);md5(),sha1()的第2
个参数设置为true
(默认为null
)即可
- 代码
$string = 123456;
$hashString = hash('md5', $string, true);
$md5String = md5($string, true);
echo $hashString . '<br/>' . $md5String . '<br/>';
$string = 123456;
$hashString = hash('sha1', $string, true);
$sha1String = sha1($string, true);
echo $hashString . '<br/>' . $sha1String;
die;
- 打印
三、回到标题
1、默认转为16进制,再转base64
- 把字符串先sha1(),默认false/null,返回16进制小写,然后base64_encode的结果为:
- 代码
$string = 123456;
echo base64_encode(sha1($string)) . '<br/>';
echo base64_encode(hash('sha1', $string)) . '<br/>';
die;
- 打印
N2M0YThkMDljYTM3NjJhZjYxZTU5NTIwOTQzZGMyNjQ5NGY4OTQxYg==
N2M0YThkMDljYTM3NjJhZjYxZTU5NTIwOTQzZGMyNjQ5NGY4OTQxYg==
2、先转为二进制,再转base64
- 代码
$string = 123456;
echo base64_encode(sha1($string, true)) . '<br/>';
echo base64_encode(hash('sha1', $string, true)) . '<br/>';
die;
- 打印
fEqNCco3Yq9h5ZUglD3CZJT4lBs=
fEqNCco3Yq9h5ZUglD3CZJT4lBs=