php hash pbkdf2,PHP hash_pbkdf2 哈希(Hash)函数
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)函数相关推荐
- php hash pbkdf2,PHP hash_pbkdf2()用法及代码示例
hash_pbkdf2()函数是PHP中的内置函数,用于生成提供的密码的PBKDF2 key . 用法: string hash_pbkdf2( $algo, $pass, $salt, $itr, ...
- 哈希(Hash)与加密(Encrypt)的基本原理、区别及工程应用
// 写在前面的话和背景 因为做项目涉及到用户在浏览器或者用户windows的桌面系统中输入完用户名和密码,发http的rest请求到nodejs server端,server端验证用户名和密码是有效 ...
- Redis-04Redis数据结构--哈希hash
文章目录 哈希概述 客户端操作hash Redis hash 结构命令 Spring操作reids的hash Step1 修改defaultSerializer Step2 操作hash 注意 代码 ...
- DHT(Distributed Hash Table,分布式哈希表)
DHT(Distributed Hash Table,分布式哈希表)类似Tracker的根据种子特征码返回种子信息的网络. DHT全称叫分布式哈希表(Distributed Hash Table),是 ...
- mysql hash创建_Mysql自适应哈希索引(Adaptive Hash Index)创建的条件
官方文档: If a table fits almost entirely in main memory, a hash index can speed up queries by enabling ...
- Redis学习---(8)Redis 哈希(Hash)
Redis 哈希(Hash) Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象. Redis 中每个 hash 可以存储 232 - 1 键值 ...
- c++ 哈希_Redis源码解析十一--Hash键实现Redis 哈希键命令实现(t_hash)
Redis 哈希键命令实现(t_hash) 1. 哈希命令介绍 Redis 所有哈希命令如下表所示:Redis 哈希命令详解 2. 哈希类型的实现 之前在redis对象系统源码剖析和注释中提到,一个哈 ...
- perl 哈希(hash) 学习笔记
perl 哈希(hash)学习笔记(一) 1.什么是哈希 哈希是perl的一种数据类型,比较类似数组,用于存放数据,包括2部分关键字keys和值value.不同于数组,哈希访问元素的是按照名字访问标量 ...
- redis 哈希hash实例应用
redis 哈希实例 因为鄙人缓存方便略差.所以努力ing 随便拿一个业务场景 来使用hash 业务场景:我要把一个停车场列表放到redis中,再根据这个列表内的数据计算距离不超过5公里的数据,并返回 ...
最新文章
- 19年BAT常问面试题汇总:JVM+微服务+多线程+锁+高并发性能
- 临床重症医学数据库MIMIC、eICU、PIC介绍
- C++Adaline自适应线性神经网络算法(附完整源码)
- java类描述_java笔记2:Java语言中的类和对象的描述
- Leetcode题解(十七)
- 实现自己的脚本语言ngscript之三:语法设计
- 两种实现大图内容平移效果的方法
- GNU make manual 翻译( 一百八十二)
- mysql增加表中数值的sql语句_sql语句--MySql添加表数据
- 新氧ubuntu 9.04中文定制 Release 版(推荐)
- 深入理解 Android 消息机制原理
- 2020农行软开实习的笔试题
- 解决win10系统安装ch341驱动程序显示“预安装成功”的一个方法
- windowsxp系统怎么装iis服务器,win xp系统安装IIS的详细步骤【图文】
- python工资高还是java-python工资高还是java?python和java薪资对比
- springboot+Rabit实战二:(Rabbit MQ web 界面管理)
- 在Win32下搭建opengl绘制环境
- 如何理解高内聚,低耦合
- dsf5.0二次开发输入框监听,其他类似
- 经纬度坐标转换成屏幕坐标