hash_hmac函数讲解

2023-12-01 02:44
文章标签 讲解 函数 hash hmac

本文主要是介绍hash_hmac函数讲解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

hash_hmac函数的概述

PHP中的hash_hmac函数是一种基于加密哈希算法的函数,用于计算消息的哈希值。它返回一个哈希值字符串,并且可以用于验证消息的完整性和认证。

哈希是一种将任意长度的消息映射到固定长度的值的算法。哈希函数可以将任意大小的数据转换为固定大小的唯一输出值,这个输出值通常称为哈希值或摘要。通常情况下,消息的任何更改都会导致在哈希值上产生不可预测的变化。这使得哈希值非常适合用于数据完整性和身份验证。

在hash_hmac函数中,使用一个密钥对消息进行哈希。密钥可以是任意长度,并且必须与使用相同密钥的任何其他用户共享。因此,hash_hmac函数可以用于生成消息身份验证代码,以便其他人可以验证消息是否来自同一源。

hash_hmac函数的语法

hash_hmac ( string $algo , string $data , string $key [, bool $raw_output = FALSE ] ) : string

参数说明:
algo:使用的哈希算法,例如“md5”、“sha256”等。
data:要哈希的消息。
key:密钥(字符串)用于对消息进行哈希。
raw_output:如果设置为TRUE,则返回原始二进制数据。否则,默认以十六进制字符串格式输出。

实例演示

// 使用SHA256算法进行哈希,并且不输出原始二进制数据
$message = "Hello world";
$hash = hash_hmac("sha256", $message, "mysecretkey");
echo $hash;
//输出结果b1cd5d99bd0c85f3a2f5d0127d4bca7aeeedab1312e9f461feeeb4a773bc68f4

在本示例中,我们对"Hello world"这个消息使用了SHA-256哈希算法进行哈希。输出结果为长度为64的十六进制字符串。

对消息进行哈希并输出原始数据

// 使用HMAC-SHA1算法进行哈希,并输出原始二进制数据
$message = "Hello world";
$hash = hash_hmac("sha1", $message, "mysecretkey", true);
echo $hash;
//输出结果:
7b39d5ec177927c552f6405a9b79719e7d483b15

在本示例中,我们对"Hello world"这个消息使用了HMAC-SHA1哈希算法进行哈希,并使用了true参数输出了原始的二进制数据。

区分使用和不使用密钥进行哈希的区别

下面的示例演示了仅使用哈希算法和使用密钥进行哈希之间的差异:

// 仅对消息使用哈希算法
$message = "Hello world";
$hash1 = hash("sha256", $message);
echo "Hash without key: " . $hash1 . "<br>";// 使用HMAC-SHA256算法和密钥哈希消息
$message = "Hello world";
$hash2 = hash_hmac("sha256", $message, "mysecretkey");
echo "Hash with key: " . $hash2;
//输出结果
Hash without key: 916f0cebf8a4c8c09a4014c0d9fc1850bfe14f94c9315d4f09eea51f11d5263
Hash with key: b1cd5d99bd0c85f3a2f5d0127d4bca7aeeedab1312e9f461feeeb4a773bc68f4

在本示例中,我们在没有密钥的情况下使用了SHA256算法对"Hello world"这个消息进行哈希,并使用了相同的算法和密钥对同一消息进行了哈希。注意两者之间的差异,即使消息完全相同。

总结

在PHP中,hash_hmac函数提供了一种简单但强大的方法来生成哈希值,并可用于验证消息的完整性和身份认证。通过指定正确的哈希算法和密钥,您可以使用此函数生成高度安全的哈希值,并在各种情况下使用它们。

这篇关于hash_hmac函数讲解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/439499

相关文章

CSS引入方式和选择符的讲解和运用小结

《CSS引入方式和选择符的讲解和运用小结》CSS即层叠样式表,是一种用于描述网页文档(如HTML或XML)外观和格式的样式表语言,它主要用于将网页内容的呈现(外观)和结构(内容)分离,从而实现... 目录一、前言二、css 是什么三、CSS 引入方式1、行内样式2、内部样式表3、链入外部样式表四、CSS 选

Kotlin运算符重载函数及作用场景

《Kotlin运算符重载函数及作用场景》在Kotlin里,运算符重载函数允许为自定义类型重新定义现有的运算符(如+-…)行为,从而让自定义类型能像内置类型那样使用运算符,本文给大家介绍Kotlin运算... 目录基本语法作用场景类对象数据类型接口注意事项在 Kotlin 里,运算符重载函数允许为自定义类型重

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

Python正则表达式语法及re模块中的常用函数详解

《Python正则表达式语法及re模块中的常用函数详解》这篇文章主要给大家介绍了关于Python正则表达式语法及re模块中常用函数的相关资料,正则表达式是一种强大的字符串处理工具,可以用于匹配、切分、... 目录概念、作用和步骤语法re模块中的常用函数总结 概念、作用和步骤概念: 本身也是一个字符串,其中

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI

C++ vector的常见用法超详细讲解

《C++vector的常见用法超详细讲解》:本文主要介绍C++vector的常见用法,包括C++中vector容器的定义、初始化方法、访问元素、常用函数及其时间复杂度,通过代码介绍的非常详细,... 目录1、vector的定义2、vector常用初始化方法1、使编程用花括号直接赋值2、使用圆括号赋值3、ve

MySQL中FIND_IN_SET函数与INSTR函数用法解析

《MySQL中FIND_IN_SET函数与INSTR函数用法解析》:本文主要介绍MySQL中FIND_IN_SET函数与INSTR函数用法解析,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一... 目录一、功能定义与语法1、FIND_IN_SET函数2、INSTR函数二、本质区别对比三、实际场景案例分