2024-09-14 23:33:46 | 我爱编程网
我爱编程网(https://www.52biancheng.com)小编还为大家带来用php将密码存入数据库,用什么方法进行加密?的相关内容。
题主你可以使用 md5 或者 sha1 进行初步处理,但为了更加安全,请你同时加上两个 salt,一个静态 salt,一个动态的 salt。以 md5 为例:\x0d\x0a假设通过 POST 传来的密码为 $_POST['password'],在存入 DB 前先进行如下的操作:\x0d\x0a$password = hash('md5', $_POST['password'].$staticSalt.$dynamicSalt);\x0d\x0a\x0d\x0a为了保证动态 salt 的唯一性,可以这样操作:\x0d\x0a$dynamicSalt = hash('md5', microtime());\x0d\x0a\x0d\x0a对于动态的 salt 可以与生成的密码一起保存在 DB 中,而静态 salt 则可以直接放在类文件中(例如定义为一个静态属性即可)。\x0d\x0a首先谢谢题主采纳了我的答案,但是我之前的回答并不是最佳答案,之所以有此加密的想法源于自己所读的源码可能比较老,所以并没使用上较新版本的加密方法,例如 bcrypt等。\x0d\x0a此外,第二点,感谢评论中几位前辈的提点,已经明白设置静态 salt 的意义并不大,生成一个较长的动态 salt 已然可以解决问题。\x0d\x0a\x0d\x0aLZ应该采用加盐HASH。\x0d\x0a如何“腌制”密码呢?\x0d\x0a=_,=\x0d\x0a正确的格式应该是,用户password+动态的salt\x0d\x0a动态的salt不能像2L所说的,使用microtime,因为时间在某些情况下不够随机,而且是可能被猜解的。\x0d\x0a这里推荐一个我用的加盐HASH\x0d\x0a$salt=base64_encode(mcrypt_create_iv(32,MCRYPT_DEV_RANDOM));\x0d\x0a$password=sha1($register_password.$salt);\x0d\x0a\x0d\x0a解释:\x0d\x0a首先使用mcrypt,产生电脑随机生成的,专门用户加密的随机数函数。\x0d\x0a第二步,把得到的随机数通过base64加密,使其变长并且不利于猜解。\x0d\x0a第三步,把得出的盐拼接到密码的后面,再对其使用sha1进行哈希\x0d\x0a再把password存入到用户的数据库。\x0d\x0aPS:为何不用静态的salt?没有必要,使用一个动态随机足够长的盐足矣。\x0d\x0a为何不用MD5?因为长度不够。\x0d\x0a为何没有使用多次HASH?因为这样反而容易发生碰撞。\x0d\x0aHASH好之后怎么使用“腌制”好的密码?\x0d\x0a用户注册->提交密码->产生salt->腌制好的密码存入数据库->salt存入数据库。\x0d\x0a用户登录->提交密码->调用salt接到提交密码的后面->进行HASH->调用之前注册腌制好的密码->对比HASH值是否和这个密码相同 以上就是我爱编程网小编给大家带来的php程序员 hash碰撞原理是什么 怎么解决,希望能对大家有所帮助。更多相关文章关注我爱编程网:www.52biancheng.com电脑程序员怎么学???程序员的岗位需求很多,例如大型网络公司、软件开发公司等等都需要程序员。程序员需要学习:1、掌握数据及其转换、数据的机内表示、算术和逻辑运算,以及相关的应用数学基础知识;2、理解计算机的组成以及各主要部件的性能指标;3、掌握操作系统、程序设计语言的基础知识;4、熟练掌握计算机常用办公软件的基本操作方法;5、熟练掌握基本数据结构和常用算法;6、
PHP管理内存函数memory_get_usage()使用介绍下面是PHPmemory_get_usage()使用示例:复制代码代码如下:echomemory_get_usage(),'<br/>';//143952$tmp=str_repeat('',4000);echomemory_get_usage(),'&l
java程序一闪就没了用vsiualstudio2005是调试C#吧,在程序Main方法最后加上一句代码Console.ReadLine();因为在C#中在控制台输出的程序,输出后窗口就关闭了,加上上面那句代码,就是说让程序停下来,等着从键盘输入一只菜鸟想用eclipse写JAVA,构建的第一个超简单的图形界面程序,程序运行窗口却一闪而逝。package com.swing;i
数据库原理中ob是什么意思相关函数简介:1、Flush:刷新缓冲区的内容,输出。函数格式:flush()说明:这个函数经常使用,效率很高。2、ob_start:打开输出缓冲区函数格式:voidob_start(void)说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或f
什么是BOM头,及PHP解决办法类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF0xBB0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。但对于PHP来说,BOM是个大麻烦。PHP并不会忽略BOM,所以在读取、包含或者
PHP语言PHP语言里的位运算符&、|、^、~、〈〈、〉〉这些符号我一个也不懂,希望高手给个全面的解释!拜"&"按位与运算按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。例如:9&5可写算式如下:00001001(9的二进制补码)&
如何解决php导入csv文件碰到乱码的问题方法一:函数mb_convert_encoding();作如下设置$str=mb_convert_encoding($str,"UTF-8","GBK");然后就可以了。方法二:函数iconv();作如下设置iconv(‘GBK',”UTF-8//TRANSLIT//IGNORE”,$str);php中exec乱码问题怎么解决?在PHP中
北大青鸟java培训:在Java程序中处理数据库超时与死锁?每个使用关系型数据库的程序都可能遇到数据死锁或不可用的情况,而这些情况需要在代码中编程来解决;本文主要介绍与数据库事务死锁等情况相关的重试逻辑概念,此外,还会探讨如何避免死锁等问题,文章以DB2(版本9)与为例进行讲解。什么是数据库锁定与死锁锁定(Locking)发生在当一个事务获得对某一资源的“锁”时,这时,其他的事务就不能
2025-02-01 20:24:39
2025-02-12 03:21:37
2025-02-10 15:19:48
2025-01-28 17:58:32
2024-11-22 05:08:01
2024-09-10 08:50:00