为什么密码要以MD5值存储在数据库

1,为什么数据库中保存的是密码的MD5值,而不是明文?

首先我们确认的一点是:MD5肯定比明文要安全一些(当然肯定不是最安全的)

如果数据库存储的是明文,如果数据库被黑了,那么明文密码泄露之后,普通用户都可以很容易登录.

但是如果存储的是MD5值,就算泄露了,普通用户也没法登录.因为页面上登录时要求输入明文.

当然程序员可以直接调用登录接口,传递密码MD5值也可以登录.

另外一点:明文包含更多的信息(相对于其MD5值),比如明文可能是银行密码,或者包含出生日期等,这些都是敏感信息.

使用MD5之后,这些敏感信息就会被抹掉.即信息量减少

如果使用明文存储,那么登录时,网络传输的是密码明文.

2,遇到的问题

若数据库存储的是密码MD5值,那么密码强度就不方便计算.

因为密码强度是根据密码明文来计算的,而不是密码的MD5值,但是数据库中存储的是密码的MD5值.

根据MD5值是没法计算密码强度的,因为MD5值不可逆,即根据MD5值没法得到明文.

所以此时密码强度应该在前端校验

原则:

(1)在网络传输中,不能传输密码明文;

(2)密码明文不能落地,即密码明文不能存储在任何地方,包括数据库,浏览器cookie

(3)就算数据库被黑,黑客也没法计算出明文

参考:http://hw1287789687.iteye.com/blog/2248374

http://hw1287789687.iteye.com/blog/2248365

时间: 2024-11-08 11:49:53

为什么密码要以MD5值存储在数据库的相关文章

PostgreSQL用户密码如何通过md5加密存储,是否加了salt

一.PG用户的密码如何通过md5加密,并且是否加了salt?本文将从源码角度跟踪分析. PG用户通过md5加密时,加了salt,而这个salt是用户名字符串. 二.源码分析 CreateRole: shadow_pass = encrypt_password(Password_encryption, stmt->role,password); |-- pg_md5_encrypt(password, role, strlen(role),encrypted_password); | |-- me

Web安全--使用Salt + Hash将密码加密后再存储进数据库

转载原地址 http://www.bozhiyue.com/mianshiti/_net/2016/0728/314239.html (一) 为什么要用哈希函数来加密密码 如果你需要保存密码(比如网站用户的密码),你要考虑如何保护这些密码数据,象下面那样直接将密码写入数据库中是极不安全的,因为任何可以打开数据库的人,都将可以直接看到这些密码. 解决的办法是将密码加密后再存储进数据库,比较常用的加密方法是使用哈希函数(Hash Function).哈希函数的具体定义,大家可以在网上或者相关书籍中查

【Unity3D】使用MD5值,确保本地Sqlite数据库内容没有被篡改

Sqlite的应用场景 在判断是否使用存储格式为Sqlite模式的标准,我们的标准是内容只读.也就是说,除非发布者修改Sqlite内容,玩家只有读取的权限. 换个角度说,Sqlite里面的数据都是游戏基础配置数据,比如游戏的关卡(不包括玩家取得的成就).怪物的血量.装备的模板数据 对于如何使用Sqlite,请参考我的另外一篇文章<Unity本地数据存储---Sqlite和JSON> 问题重现 OK,既然我们选择了Sqlite作为存储手段之一,那么我们也嘚重视起安全性. 以android而言,我

改变文件的MD5值

有时我们上传视频到youtube由于md5雷同不能上传, 我们需要下载MD5Checker来查询文件的md5值 链接:http://pan.baidu.com/s/1qWkpyG0 密码:3frx 编辑-打开文件,即可查看文件MD5 新建文件夹 命名为md5 把要改变md5的文件拖进来 如上123.rmvb就是我们要改动的文件 在文件夹中新建MD5.txt 输入1然后保存 关闭 在文件夹中新建ChangeMD5.txt 输入 FOR %%1 in (*.rmvb) do COPY %%1+MD5

MD5值算法原理

MD5原理说明 一.MD5算法介绍. MD5,即“Message-Digest Algorithm 5(信息-摘要算法)”,从名字来看就知道它是从MD3.MD4发展而来的一种加密算法,其主要通过采集文件的信息摘要,以此进行计算并加密.通过MD5算法进行加密,文件就可以获得一个唯一的MD5值,这个值是独一无二的,就像我们的指纹一样,因此我们就可以通过文件的MD5值来确定文件是否正确,密码进行加密后也会生成MD5值,论坛就是通过MD5值来验证用户的密码是否正确的. 二.MD5算法实现. MD5是输入

在C#后台使用MD5值对文件进行加

首先说一下MD5值的概念和来源.MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2.MD3和MD4发展而来. Message-Digest泛指字节串(Message)的Hash变换,就是把一个任意长度的字节串变换成一定长的大整数.请注意我使用了"字节串"而不是"字符串"这个词,是因为这种变换只与字节的值有关,与字符集或编码方式无关. MD5将任意长度的&

MD5工具类,提供字符串MD5加密、文件MD5值获取(校验)功能

MD5工具类,提供字符串MD5加密(校验).文件MD5值获取(校验)功能 : package com.yzu.utils; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.security.MessageDigest; impor

获取.keystore 的签名信息和MD5值

假如我们想要获取xxxx.keystore的签名信息和md5值,同样可以用keytool命名 1.确保安装了jdk并且正确配置了环境变量 2.在cmd中执行  cd 到证书文件夹 输入 证书密码: 可以获取MD5 值的信息. 原文地址:https://www.cnblogs.com/yxb-home/p/8386142.html

go语言之JSON与md5值

go语言之JSON与md5值 一.Json是什么? 是一种轻量级的数据交换语言,用于数据交换.Json由于比XML更小.更快.更易解析,以及浏览器的内建快速解析支持,使得其更实用于网络数据交互.目前我们看到很多的开放平台,基本上都是采用了JSON作为他们的数据交互的接口.go语言提供了内置的encoding/json 标准库,在github上提供了更快的json标准库,github.com/pquerna/ffjson/ffjson 二.JSON数据的编码和解码 编码函数: func Marsh