PHP字符串作为字节数组,哈希hash然后base64编码

一、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=

3、md5()同理

猜你喜欢

转载自blog.csdn.net/qq_36025814/article/details/107963067