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 字符串

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338224.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

using用法是什么?

using用法是:1、命名空间using namespace 命名空间;//这样每次使用命名空间中的变量时就不用指定命名空间了注意:头文件中不应有using命名空间的声明2、类型别名(C 11)using aa double;//等价于typedef double aatypedef double …

netflix测试能不能看_Netflix监管者测试–引入知事,准官员

netflix测试能不能看考虑一个典型的Netflix Governator junit测试。 public class SampleWithGovernatorJunitSupportTest {Rulepublic LifecycleTester tester new LifecycleTester();Testpublic void testExampleBeanInjection() throws Exception {tester.start();Injecto…

java中vector容器,vector向量容器(常用的使用方法总结)

关于STL中vector容器的学习,编译运行后边看代码,边看执行结果效果更佳,还是想说看别人的代码一百遍,不如自己动手写一遍。vector向量容器不但能像数组一样对元素进行随机访问,还能随时在尾部插入元素,简单而…

学习C ,常见的误解

学习C 你是否会有以下几点误解?1. “要理解C ,你必须先学习C”2. “C 是一门面向对象的语言”3. “为了软件可靠性,你需要垃圾回收”4. “为了效率,你必须编写底层代码”5. “C 只适用于大型、复杂的程序”如果你中*了&#xff0c…

openshift使用_OpenShift DIY:使用Gradle构建Spring Boot / Undertow应用程序

openshift使用由于此错误, Gradle 1.6是在OpenShift上运行的最后一个受支持的Gradle版本。 但是从Gradle 2.2开始,这不再是问题,因此,使用自己动手做墨盒,在OpenShift上运行最新的Gradle不再是问题。 DIY盒带是一种实验…

php管理智能dns,负载均衡之DNS轮询

域名注册商都支持对统一主机添加多条A记录,这就是DNS轮询,DNS服务器将解析请求按照A记录的顺序,随机分配到不同的IP上,这样就完成了简单的负载均衡。下图的例子是:有3台联通服务器、3台电信服务器,要实现“…

java ee jsp_EE JSP:使用自定义标签库生成动态内容

java ee jsp在Web应用程序中开发View层时,您希望尽量不要重复JSP文件中的内容。 JSP spec API允许您通过使用标记库来减少这种重复。 定制JSP标记是用户定义的xml标记元素,您可以将其插入JSP文件以替换为某些动态内容。 这是一个使用自定义JSP标记的简单…

php怎么把时间戳转成日期格式,php怎么把时间格式转换为时间戳?,时间戳转为日期...

php怎么把时间格式转换为时间戳?PHP怎么把时间格式转换成时间戳?,php时间格式转换为时间戳的方法:1。使用mktime()将时间转换为时间戳,语法为“mktime(小时、分钟、秒、月、日、年)”;2.使用strtime()将字符…

C语言的标识符由什么组成

C语言的标识符由字母、数字、下划线组成,并且第一个字符必须是字母或下划线,不能是数字。在标识符中,字母的大小写是有区别的,例如BOOK与book是两个不同的标识符。定义变量时,我们使用了诸如 a、abc、mn123 这样的名字…

jdk8读取文件_JDK 7和JDK 8中大行读取速度较慢的原因

jdk8读取文件我早些时候发布了博客文章Reading Large Lines Slower in JDK 7和JDK 8,并且在描述该问题的文章上有一些有用的评论 。 这篇文章提供了更多解释,说明为何该文章中演示的文件读取(并由Ant的LineContainsRegExp使用 )在…

oracle_sod,oracle geometry几何关系sdo_Geom.Relate介绍,

oracle geometry几何关系sdo_Geom.Relate介绍,sdo_Geom.Relate(sdo_Geometry1, ‘MASK’, sod_Geometry2, tolerance ):用于判断一个几何体与另一个几何体的关系,我们用于判断当前点是否在某一个面(省份面、县市面、乡镇面)上。参数说明&…

C 11 实现的 100行 线程池

C 线程池一直都是各位程序员们造轮子的首选项目之一。今天,小编带大家一起来看看这个轻量的线程池,本线程池是header-only的,并且整个文件只有100行,其中C 的高级用法有很多,很值得我们学习,一起来看看吧。…

oracle把多行合并成字符串,怎样将Oracle多行转换成字符串?

在做一些比较复杂的DB数据导出时,有时会要求“将不固定的多行数据组合成一个字符串返回”。例子:ISV Portal中就遇到了类似的情况,要求对于每一个APP,返回其所属的所有类目名称,类目名称之间用[,]隔开。本文就用此例子…

openshift使用_OpenShift v3:使用WildFly和MySQL的Java EE 7入门

openshift使用OpenShift是Red Hat的开源PaaS平台。 OpenShift v3 (将于今年发布)将提供使用Docker和Kubernetes运行微服务的整体体验。 以经典的Red Hat方式,所有工作都在OpenShift Origin的开源中完成。 这也将推动OpenShift Online和OpenSh…

c程序的基本组成单位是什么?

C程序是由函数构成的。函数是C程序的基本组成单位。一个C源程序中仅有一个main()函数,除main函数之外可以有若干个其它的函数。每个函数实现某一特定的操作。因此,函数是C程序的基本单位。一个函数由两部分组成:函数的说明部分。包括函数名、函数类型、函…

java多线程 异常处理_Java8多线程ForkJoinPool:处理异常

java多线程 异常处理引入Java8 lambda背后的主要动机之一是能够尽可能轻松地使用多核的能力(请参阅精通Lambdas:多核世界中的Java编程 )。 只需将代码从collection.stream()...更改为collection.parallelStream()...您就可以使用即时多线程&a…

C语言头文件 “ 细节 ”

很多事不深入以为自己懂了,但真正用到项目上,才发现了问题。曾以为自己写C语言已经轻车熟路了,特别是对软件文件的工程管理上,因为心里对自己的代码编写风格还是有自信的。(毕竟刚毕业时老大对我最初的训练就是编码格式的规范化处…

订阅号微信公众号历史文章爬虫php,一步步教你怎么打造微信公众号历史文章爬虫...

原标题:一步步教你怎么打造微信公众号历史文章爬虫开篇语:邓爷爷曾说过:不管黑猫白猫,逮到耗子就是好猫。不管我是凑的还是笨办法堆出来的,确实把批量导出微信公众号所有历史文章的这个功能给做出来了,而且…

oracle中悲观锁定_如何使用悲观锁定修复乐观锁定竞争条件

oracle中悲观锁定回顾 在我以前的文章中 ,我解释了使用显式乐观锁定的好处。 然后我们发现,在很短的时间范围内,并发交易仍可以在我们当前交易被提交之前立即提交产品价格更改。 此问题可以描述如下: 爱丽丝拿产品 然后&#…

初学者宝典:C语言入门基础知识大全(中)

04常量在程序运行中,其值不能被改变的量称为常量。常量有5种类型:整型常量、实型常量、字符常量、字符串常量和符号常量。4.1 数值转换—数值的四种表现形式:①:二进制:所有数字由0,1构成,逢二进一&#xf…