多语言展示
当前在线:1296今日阅读:19今日分享:20

php加密之Hash

允许使用各种哈希算法直接或增量处理任意长度的信息。构建此扩展不需要其他扩展,并且属于PHP核心部分
工具/原料
1

php开发环境

2

php官方学你手册

Hash扩展常用函数学习
1

查看hash支持的加密算法有哪些array hash_algos ( void )

2

创建hash的增量上下文对象resource hash_init ( string $algo [, int $options = 0 [, string $key = NULL ]] )$algo 其实就是各种加密算法,可以通过hash_algos()获取查看$options 目前就只支持HASH_HMAC$key 当options设置的时候,该参数可以当做密钥

3

复制hash的上下文对象resource hash_copy ( resource $context )通过下图的代码可以看出在执行了其他的hash函数后上下文中的内容会发生改变,此hash_copy复制的是改变后的上下文对象

4

结束增量哈希,并且返回摘要结果(可以看将上下文进行修改后,获取上下文的描述类似于toString)string hash_final ( resource $context [, bool $raw_output = false ] )$context 上下文对象$raw_output 设置为 TRUE,输出格式为原始的二进制数据。 设置为 FALSE,输出小写的 16 进制字符串。

5

给存在的hash上下文对象增加数据,或填充数据,使得原本的上下文对象发生改变bool hash_update ( resource $context , string $data )与其相同的函数还有hash_update_file和hash_update_stream,分别通过指定文件或者文件流来改变上线文bool hash_update_file ( resource $hcontext , string $filename [, resource $scontext = NULL ] )int hash_update_stream ( resource $context , resource $handle [, int $length = -1 ] )

6

通过指定一个文件的内容生成hash值(就如果使用文件密钥加密一样)string hash_file ( string $algo , string $filename [, bool $raw_output = false ] )$algo  加密算法$filename   加密文件$raw_output 设置为 TRUE,输出格式为原始的二进制数据。 设置为 FALSE,输出小写的 16 进制字符串string hash ( string $algo , string $data [, bool $raw_output = false ] )$algo  加密算法$data 加密文件$raw_output 设置为 TRUE,输出格式为原始的二进制数据。 设置为 FALSE,输出小写的 16 进制字符串

7

使用 HMAC 方法和给定文件的内容生成带密钥的哈希值string hash_hmac_file ( string $algo , string $filename , string $key [, bool $raw_output = false ] )$algo 要使用的哈希算法名称,例如:'md5','sha256','haval160,4' 等$filename 要进行哈希运算的文件路径,支持 fopen 封装器。$key 使用 HMAC 生成信息摘要时所使用的密钥。$raw_output 设置为 TRUE 输出原始二进制数据, 设置为 FALSE 输出小写 16 进制字符串。与上面方法像是的方法是:hash_hmacstring hash_hmac ( string $algo , string $data , string $key [, bool $raw_output = false ] )$algo 要使用的哈希算法名称,例如:'md5','sha256','haval160,4' 等$data 要进行哈希运算的消息。$key 使用 HMAC 生成信息摘要时所使用的密钥。$raw_output 设置为 TRUE 输出原始二进制数据, 设置为 FALSE 输出小写 16 进制字符串。

8

生成所提供密码的 PBKDF2 密钥导出(其实可以看做通过提供的密码和提供的随机码生成另一个密码)string hash_pbkdf2 ( string $algo , string $password , string $salt , int $iterations [, int $length = 0 [, bool $raw_output = false ]] )$algo 哈希算法名称$password 要进行导出的密码。$salt 进行导出时所使用的'盐',这个值应该是随机生成的。$iterations 进行导出时的迭代次数。$length 密钥导出数据的长度。如果 raw_output 为 TRUE, 此参数为密钥导出数据的字节长度。如果 raw_output 为 FALSE, 此参数为密钥导出数据的字节长度的 2 倍,因为 1 个字节数据对应的 2 个 16 进制的字符。如果传入 0,则使用所选算法的完整输出大小。$raw_output 设置为 TRUE 输出原始二进制数据, 设置为 FALSE 输出小写 16 进制字符串。

注意事项

从函数可以看出hash扩展的函数非常简单,都是生成hash值的但在开发者使用到的地方也很多,比如支付宝的加密

推荐信息