php加密之Hash
允许使用各种哈希算法直接或增量处理任意长度的信息。构建此扩展不需要其他扩展,并且属于PHP核心部分
工具/原料
php开发环境
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 $filenam髫潋啜缅e , 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 进制字符串。