PHP hash_pbkdf2 哈希(Hash)函数

发布时间:2020-08-06 09:09:47

来源:51CTO

阅读:270

作者:web全栈

定义和用法

hash_pbkdf2 - 生成所提供密码的 PBKDF2 密钥导出

版本支持PHP4PHP5PHP7不支持V5.5.0+支持支持7.2.0 不再支持非加密的哈希函数(adler32,crc32,crc32b,fnv132,fnv1a32,fnv164,fnv1a64,joaat)。

语法hash_pbkdf2( string $algo , string $password , string $salt , int $iterations [, int $length = 0 [, bool $raw_output = FALSE ]] )

hash_pbkdf2()生成所提供密码的 PBKDF2 密钥导出

参数参数必需的描述algo是要使用的哈希算法名称,例如:"md5","sha256","haval160,4" 等。 如何获取受支持的算法清单,请参见 hash_algos()。

password是要进行导出的密码。

salt是进行导出时所使用的“盐”,这个值应该是随机生成的。

iterations是进行导出时的迭代次数。

length否密钥导出数据的长度。如果 raw_output 为 TRUE, 此参数为密钥导出数据的字节长度。如果 raw_output 为 FALSE, 此参数为密钥导出数据的字节长度的 2 倍,因为 1 个字节数据对应的 2 个 16 进制的字符。如果传入 0,则使用所选算法的完整输出大小。

raw_output否设置为 TRUE 输出原始二进制数据, 设置为 FALSE 输出小写 16 进制字符串。

返回值

如果 raw_output 设置为 TRUE, 则返回原始二进制数据表示的信息摘要, 否则返回 16 进制小写字符串格式表示的信息摘要。在以下情况下会产生 E_WARNING: 指定了未知的算法, iterations 小于等于 0, length 小于等于 0 或者 salt 过长(大于 INT_MAX - 4)。

示例$password = "password";

$iterations = 1000;

// 使用 openssl_random_pseudo_bytes(),random_bytes(),或者其他合适的随机数生成函数

// 来生成随机初始向量

$salt = openssl_random_pseudo_bytes(16, $cstrong);

$hash = hash_pbkdf2("sha256", $password, $salt, $iterations, 20);

echo $hash;

为了安全起见,可以使用 PBKDF2 方法对密码明文进行哈希运算后再存储。 但是更好的方案是使用 password_hash() 函数 或者使用 CRYPT_BLOWFISH 算法调用 crypt() 函数。

相关页面

crypt() - 单向字符串散列

hash() - 生成哈希值 (消息摘要)

hash_algos() - 返回已注册的哈希算法列表

hash_init() - 初始化增量哈希运算上下文

hash_hmac() - 使用 HMAC 方法生成带有密钥的哈希值

hash_hmac_file() - 使用 HMAC 方法和给定文件的内容生成带密钥的哈希值

openssl_pbkdf2() - 生成一个 PKCS5 v2 PBKDF2 字符串

php hash pbkdf2,PHP hash_pbkdf2 哈希(Hash)函数相关推荐

  1. php hash pbkdf2,PHP hash_pbkdf2()用法及代码示例

    hash_pbkdf2()函数是PHP中的内置函数,用于生成提供的密码的PBKDF2 key . 用法: string hash_pbkdf2( $algo, $pass, $salt, $itr, ...

  2. 哈希(Hash)与加密(Encrypt)的基本原理、区别及工程应用

    // 写在前面的话和背景 因为做项目涉及到用户在浏览器或者用户windows的桌面系统中输入完用户名和密码,发http的rest请求到nodejs server端,server端验证用户名和密码是有效 ...

  3. Redis-04Redis数据结构--哈希hash

    文章目录 哈希概述 客户端操作hash Redis hash 结构命令 Spring操作reids的hash Step1 修改defaultSerializer Step2 操作hash 注意 代码 ...

  4. DHT(Distributed Hash Table,分布式哈希表)

    DHT(Distributed Hash Table,分布式哈希表)类似Tracker的根据种子特征码返回种子信息的网络. DHT全称叫分布式哈希表(Distributed Hash Table),是 ...

  5. mysql hash创建_Mysql自适应哈希索引(Adaptive Hash Index)创建的条件

    官方文档: If a table fits almost entirely in main memory, a hash index can speed up queries by enabling ...

  6. Redis学习---(8)Redis 哈希(Hash)

    Redis 哈希(Hash) Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象. Redis 中每个 hash 可以存储 232 - 1 键值 ...

  7. c++ 哈希_Redis源码解析十一--Hash键实现Redis 哈希键命令实现(t_hash)

    Redis 哈希键命令实现(t_hash) 1. 哈希命令介绍 Redis 所有哈希命令如下表所示:Redis 哈希命令详解 2. 哈希类型的实现 之前在redis对象系统源码剖析和注释中提到,一个哈 ...

  8. perl 哈希(hash) 学习笔记

    perl 哈希(hash)学习笔记(一) 1.什么是哈希 哈希是perl的一种数据类型,比较类似数组,用于存放数据,包括2部分关键字keys和值value.不同于数组,哈希访问元素的是按照名字访问标量 ...

  9. redis 哈希hash实例应用

    redis 哈希实例 因为鄙人缓存方便略差.所以努力ing 随便拿一个业务场景 来使用hash 业务场景:我要把一个停车场列表放到redis中,再根据这个列表内的数据计算距离不超过5公里的数据,并返回 ...

最新文章

  1. 19年BAT常问面试题汇总:JVM+微服务+多线程+锁+高并发性能
  2. 临床重症医学数据库MIMIC、eICU、PIC介绍
  3. C++Adaline自适应线性神经网络算法(附完整源码)
  4. java类描述_java笔记2:Java语言中的类和对象的描述
  5. Leetcode题解(十七)
  6. 实现自己的脚本语言ngscript之三:语法设计
  7. 两种实现大图内容平移效果的方法
  8. GNU make manual 翻译( 一百八十二)
  9. mysql增加表中数值的sql语句_sql语句--MySql添加表数据
  10. 新氧ubuntu 9.04中文定制 Release 版(推荐)
  11. 深入理解 Android 消息机制原理
  12. 2020农行软开实习的笔试题
  13. 解决win10系统安装ch341驱动程序显示“预安装成功”的一个方法
  14. windowsxp系统怎么装iis服务器,win xp系统安装IIS的详细步骤【图文】
  15. python工资高还是java-python工资高还是java?python和java薪资对比
  16. springboot+Rabit实战二:(Rabbit MQ web 界面管理)
  17. 在Win32下搭建opengl绘制环境
  18. 如何理解高内聚,低耦合
  19. dsf5.0二次开发输入框监听,其他类似
  20. 经纬度坐标转换成屏幕坐标

热门文章

  1. mockito_吸收Mockito的流利度
  2. apache camel_使用Apache Camel发布/订阅模式
  3. 书评– Kubernetes Up&Running,作者:Kelsey Hightower
  4. 都灵JVM编程语言:使用ANTLR构建高级词法分析器
  5. 使用PrimeFaces开发数据导出实用程序
  6. JPA休眠替代方案。 如果JPA或Hibernate对于我的项目而言不够好,该怎么办?
  7. JPA教程–在Java SE环境中设置JPA
  8. Java调试器和超时
  9. Java中常见的代码冲突
  10. Jenkins:部署JEE工件