首页 > 编程 > PHP > 正文

php 扩展 hash 模块的基本使用

2019-11-06 06:23:31
字体:
来源:转载
供稿:网友
<?phpecho '<PRe>';$algos = hash_algos(); //列出所有支持的hash算法// print_r($algos);// ------------------------------------------------------// 字符串hash$data = 'The quick brown fox jumped over the lazy dog.';echo hash('md5', $data); //md5 哈希$key = 'md5-key';echo hash_hmac('md5', $data, $key); //使用 HMAC 方法生成带有密钥的哈希值// ------------------------------------------------------// 文件hash$file = 'hmac.txt';echo hash_file('md5', $file);echo hash_hmac_file('md5', $file, $key);// ------------------------------------------------------/** * @param $algo hash算法 * @param $data string|array 字符串或者字符串数组 * @param $options 进行哈希运算的可选设置,目前仅支持:HASH_HMAC。当指定此选项时,必须指定 key 参数 * @param $key 当 options 参数为 HASH_HMAC 时,使用此参数传入进行 HMAC 哈希运算时的共享密钥 */function my_hash_data($algo, $data, $options = 0, $key = NULL) {	// resource hash_init ( string $algo [, int $options = 0 [, string $key = NULL ]] )	$ctx = hash_init($algo, $options, $key);	if(is_string($data)) {		hash_update($ctx, $data);	} else if(is_array($data)) {		foreach($data as $s) {			hash_update($ctx, $s); //填充数据, 可以多次调用, 和拼接字符串效果一样		}	}	return hash_final($ctx); //输出最后的数据}// test codeecho my_hash_data('md5', $data);// ------------------------------------------------------/** * 文件类型 hash */function my_hash_file($algo, $filename, $options = 0, $key = NULL) {	$ctx = hash_init($algo, $options, $key);	/*	两个函数的不同之处:	 1. hash_update_stream	第二个参数是一个打开的文件句柄	 2. hash_update_file	第二个参数是一个文件名	*/	hash_update_file($ctx, $filename);	return hash_final($ctx);}// test codeecho my_hash_file('sha1', $file);
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表