都说md5不安全,貌似很多时候说是用sha1()进行加密更加安全,甚至还有用一种叫bcrypt的算法,各位phper平时都是怎么选择的呢?

回复内容:

都说md5不安全,貌似很多时候说是用sha1()进行加密更加安全,甚至还有用一种叫bcrypt的算法,各位phper平时都是怎么选择的呢?

题主你可以使用 md5 或者 sha1 进行初步处理,但为了更加安全,请你同时加上两个 salt,一个静态 salt,一个动态的 salt。以 md5 为例:

假设通过 POST 传来的密码为 $_POST['password'],在存入 DB 前先进行如下的操作:

$password = hash('md5', $_POST['password'].$staticSalt.$dynamicSalt);

为了保证动态 salt 的唯一性,可以这样操作:

$dynamicSalt = hash('md5', microtime());

对于动态的 salt 可以与生成的密码一起保存在 DB 中,而静态 salt 则可以直接放在类文件中(例如定义为一个静态属性即可)。

首先谢谢题主采纳了我的答案,但是我之前的回答并不是最佳答案,之所以有此加密的想法源于自己所读的源码可能比较老,所以并没使用上较新版本的加密方法,例如 bcrypt等。

此外,第二点,感谢评论中几位前辈的提点,已经明白设置静态 salt 的意义并不大,生成一个较长的动态 salt 已然可以解决问题。

LZ应该采用加盐HASH。

如何“腌制”密码呢?

=_,=

正确的格式应该是,用户password+动态的salt

动态的salt不能像2L所说的,使用microtime,因为时间在某些情况下不够随机,而且是可能被猜解的。

这里推荐一个我用的加盐HASH

$salt=base64_encode(mcrypt_create_iv(32,MCRYPT_DEV_RANDOM));

$password=sha1($register_password.$salt);

解释:

首先使用mcrypt,产生电脑随机生成的,专门用户加密的随机数函数。

第二步,把得到的随机数通过base64加密,使其变长并且不利于猜解。

第三步,把得出的盐拼接到密码的后面,再对其使用sha1进行哈希

再把password存入到用户的数据库。

PS:为何不用静态的salt?没有必要,使用一个动态随机足够长的盐足矣。

为何不用MD5?因为长度不够。

为何没有使用多次HASH?因为这样反而容易发生碰撞。

HASH好之后怎么使用“腌制”好的密码?

用户注册->提交密码->产生salt->腌制好的密码存入数据库->salt存入数据库。

用户登录->提交密码->调用salt接到提交密码的后面->进行HASH->调用之前注册腌制好的密码->对比HASH值是否和这个密码相同

最后推荐一篇文章,我是从中获益的,希望LZ也有所收获。

http://blog.jobbole.com/61872/

可以试试 phpass

对密码进行哈希相对安全的方法是使用bcrypt算法。开源的phpass库以一个易于使用的类来提供此功能。

这是我以前写的一篇关于密码加密的博文,欢迎参考。

http://www.wkii.org/save-user-password-use-bcrypt-or-pbkdf2.html

另外,请参考php5.5的内置函数

http://www.php.net/manual/zh/function.hash-pbkdf2.php

我写的pbkdf2与php5.5的函数输出结果一致。

相关标签:php 加密

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php加密数据库工具,各位用php将密码存入数据库,都用什么方法进行加密的?相关推荐

  1. CYQ.DBImport 数据库反向工程及批量导数据库工具 V2.0 发布[增加批量导出数据库脚本及数据库设计文档]...

    上次发布的:CYQ.DBImport V1.0的相关介绍:CYQ.DBImport 数据库反向工程及批量导数据库工具 V1.0 本次发布的V2.0 版本,准备突击海外,下面为相关的介绍. 一:新版本2 ...

  2. MySQL数据库工具类之——DataTable批量加入MySQL数据库(Net版)

    MySQL数据库工具类之--DataTable批量加入数据库(Net版),MySqlDbHelper通用类希望能对大家有用,代码如下: using MySql.Data.MySqlClient; us ...

  3. 加密解密工具 之 普莱费尔密码

    普莱费尔密码(英文:Playfair Cipher 或 Playfair Square)是一种使用一个关键词方格来加密字符对的加密法,1854年由一位名叫查尔斯·惠斯通(Charles Wheatst ...

  4. JAVA把账号密码存入数据库_jdbc,采用properties文件保存数据库账号密码以及链接...

    1,在根目录创建 mysql.properties 文件,使用这个文件是为了方便以后生成class文件后可修改链接任意数据库 2,导入jar包,自行百度下载. 3,写一个 SqlUtil.class ...

  5. linux python开发环境sql数据迁移到mysql_运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程,把获取的信息存入数据库...

    运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程 有关前两篇的链接: 一.实验环境: Python2.7.10.pycharm.VM虚拟机.CentOS6.3.mys ...

  6. python将数据存入数据库_Python读取NGINX日志将其存入数据库

    日志数据: #/usr/bin/env python #-*-coding:UTF-8 -*- from datetime import datetime stat_days = [] import ...

  7. tomcat xjar 加密_XJar Spring Boot JAR 安全加密运行工具

    GitHub: https://github.com/core-lib/xjar Spring Boot JAR 安全加密运行工具, 同时支持的原生JAR. 基于对JAR包内资源的加密以及拓展Clas ...

  8. springboot xjar 安全加密运行工具

    这里写自定义目录标题 xjar安全加密运行工具 创建项目 编写代码 idea将maven项目打包成可运行的jar包 运行加密jar文件 centos 安装go springboot项目集成xjar 加 ...

  9. python把图片存放到数据库_使用Python把图片存入数据库

    一般情况下我们是把图片存储在文件系统中,而只在数据库中存储文件路径的,但是有时候也会有特殊的需求:把图片二进制存入数据库. MYSQL是支持把图片存入数据库的,也相应的有一个专门的字段BLOB(Bin ...

最新文章

  1. 只要60页!牛逼不行的Python数据分析入门知识手册
  2. python :如何将list存入txt后,再读出list
  3. 【CyberSecurityLearning 21】防火墙
  4. python学习笔记之集合
  5. jsf 自定义属性_必填字段的自定义JSF验证器
  6. Java自学笔记(16):常用类:Math,Data和Calender,Format,Scanner
  7. (26)FPGA编码器设计(第6天)
  8. 国产网游制作现状、差距及提高
  9. 在ubuntu下怎么安装和使用Github
  10. arcpy 创建弧度制与十进制互换的个人工具箱
  11. Keras中文文档 评估标准Metrics
  12. linux查看ubuntu版本命令,检查Ubuntu版本号的三种方法:从终端和设置中检查及使用Neofetch...
  13. c语言数独思路介绍,【数独运算器】,关于数独的解题思路,已经改进。
  14. 创业工场麦刚:不要把创业美化
  15. Android Framework 音频子系统(01)音频基础知识
  16. vue渲染大量数据优化_vue大数据表格卡顿问题的完美解决方案
  17. flutter安装_在macOS上搭建Flutter开发环境
  18. 解决vivado赋reg时出现的cannot assign to memory或者cannot assign a packed type to an unpacked type
  19. UVa 10115 - Automatic Editing
  20. Microsoft COCO: Common Objects in Context - 目标检测评估 指标(Detection Evaluation)

热门文章

  1. 语言生日创意代码_BlenderOSL代码编程
  2. php header什么意思,php header的用法是什么
  3. Python+OpenCV:基于SVM手写数据OCR(OCR of Hand-written Data using SVM)
  4. 用python语言实现反恐精英基础版-案例
  5. 阿甘博客文章写法与教学方法
  6. 机器学习实战之Logistic回归
  7. APP如何进行通信的
  8. QQ空间Python爬虫(3)---终章
  9. Android proguard-rules.pro 混淆模板
  10. java dom xml解析和windows dom解析的差别