Maison >développement back-end >tutoriel php >Exemple de code pour une utilisation de base du module de hachage étendu PHP

Exemple de code pour une utilisation de base du module de hachage étendu PHP

黄舟
黄舟original
2017-03-15 17:14:461475parcourir

extension phphashExemple de code pour une utilisation de base du module

<?php
echo &#39;<pre class="brush:php;toolbar:false">&#39;;

$algos = hash_algos(); //列出所有支持的hash算法
// print_r($algos);


// ------------------------------------------------------
// 字符串hash
$data = &#39;The quick brown fox jumped over the lazy dog.&#39;;
echo hash(&#39;md5&#39;, $data); //md5 哈希
$key = &#39;md5-key&#39;;
echo hash_hmac(&#39;md5&#39;, $data, $key); //使用 HMAC 方法生成带有密钥的哈希值


// ------------------------------------------------------
// 文件hash
$file = &#39;hmac.txt&#39;;
echo hash_file(&#39;md5&#39;, $file);
echo hash_hmac_file(&#39;md5&#39;, $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 code
echo my_hash_data(&#39;md5&#39;, $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 code
echo my_hash_file(&#39;sha1&#39;, $file);

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn