数据库存储安全之(MD5+盐)加密

一般系统数据库密码加密方式:

  • MD5后存入数据库
  • SHA1 Hash后存入数据库

缺点:黑客可以通过密码暴力破解获取密码信息,具体做法是将常用密码进行Hash后做成一个字典,

破解的时候,只需要查字典就能知道对应的明文密码。

建议:使用以下两种密码策略相结合的方式去解决

  • 密码 + 盐(一串随机数) 再Hash
  • 限制密码最小长度和密码复杂度

解释:以上给每个密码加一个随机数后,实际上是将密码人为地拓展了N位,导致密码长度大增,

使得攻击者很难很难构造这么大的一个字典去破解。退一步讲,就算攻击者的字典足够强大但是暴力破解

所需要花费的时间代价过长从而降低了这种风险。

还是那句话,没有绝对的安全。以上建议也许不够完善,后续有了新的见解后继续更新此文章,

或者哪位高手可以给出更高级的密码安全存储方法。



常见hash算法,MD5SHA-1

时间: 2024-08-27 21:45:20

数据库存储安全之(MD5+盐)加密的相关文章

一种简单的md5加盐加密的方法(防止彩虹表撞库)

md5加密(或者说摘要算法)大家都很熟悉了 就不解释了 现在很多数据库设计都喜欢用单向加密的方式保存密码,验证时对提交的密码再次加密之后做密文对比 /// <summary> 使用MD5加密 /// </summary> /// <param name="input">加密字符串</param> /// <remarks>2015.08.26</remarks> public static Guid ToMD5(s

Java关于md5+salt盐加密验证

一.陈述一下工作流程: 1.根据已有的密码字符串去生成一个密码+盐字符串,可以将盐的加密字符串也存放在数据库(看需求), 2.验证时将提交的密码字符串进行同样的加密再从数据库中取得已有的盐进行组合密码+盐的字符串和已有的进行验证 package com.mi.util; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgori

关于MD5+salt盐加密

MD5+salt 最近浏览浏览一些帖子时,发现曾经引以为傲的md5加密算法,虽然是无法解密的算法,但是现在可以通过FELHELP(谷歌浏览器插件)或者一些字典可以套出来,.但是当md5+salt值时,套出的几率微乎其微. ---以下参考:微尔雅-的java关于md5+salt盐加密验证 一.陈述一下工作流程: 1.根据已有的密码字符串去生成一个密码+盐字符串,可以将盐的加密字符串也存放在数据库(看需求), 2.验证时将提交的密码字符串进行同样的加密再从数据库中取得已有的盐进行组合密码+盐的字符串

MD5加盐加密

package com.chauvet.utils; import java.security.NoSuchAlgorithmException;import java.util.Random; /*** * MD5 * @author WXW * */public class MD5Util { private final String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_."

Shiro身份认证、盐加密

目的: Shiro认证 盐加密工具类 Shiro认证 1.导入pom依赖 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>org.apache.s

iOS开发网络篇—数据安全&#160;(使用MD5算法加密)

一.简单说明 1.说明 在开发应用的时候,数据的安全性至关重要,而仅仅用POST请求提交用户的隐私数据,还是不能完全解决安全问题. 如:可以利用软件(比如Charles)设置代理服务器,拦截查看手机的请求数据 “青花瓷”软件 因此:提交用户的隐私数据时,一定不要明文提交,要加密处理后再提交 2.常见的加密算法 MD5 \ SHA \ DES \ 3DES \ RC2和RC4 \ RSA \ IDEA \ DSA \ AES 3.加密算法的选择 一般公司都会有一套自己的加密方案,按照公司接口文档的

Ubuntu上使用Redis数据库存储SessionID并实现Session共享

p { margin-bottom: 0.1in; direction: ltr; color: #00000a; line-height: 120%; text-align: left; orphans: 2; widows: 2 } p.western { font-family: "Liberation Serif", serif; font-size: 12pt } p.cjk { font-family: "Noto Sans CJK SC Regular"

密码的加盐加密

我们 所 使用密码的加密方式 大多为md5 加密  但是一些不法分子 利用 云计算 分布式计算 可以暴力破解我们的密码 我们通过 加入盐值的方式 加密 密码使得密码 不会被轻易破解 1 //对密码进行加盐加密 2 $password = $this->data['password']; 3 //生成盐值 随机生成几个字符串 4 $altToken = md5(String::randString(10)); 5 //加入盐值 6 $password = md5($password.$altTok

MD5字符串加密Md5Parser

MD5字符串加密 package com.flyou.utils; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class Md5Parser { /** * md5加密方法 * * @param password * @return */ public static String md5Parser(String password) { try { // 得到

MD5 不可逆加密,Des对称可逆加密 ,RSA非对称可逆加密 ,数字证书 SSL

:MD5 不可逆加密2:Des对称可逆加密3:RSA非对称可逆加密4:数字证书 SSL Anker_张(博客园)http://www.cnblogs.com/AnkerZhang/ 1:MD5 不可逆加密 using System.IO; using System.Security.Cryptography; using System.Text; namespace EncryptDemo { /// <summary> /// 不可逆加密 /// 1 防止被篡改 /// 2 防止明文存储 /