MD5为什么要加盐

之前面试的时候,遇到一个面试的哥哥。不停的跟我确认我对网络传输过程中的password进行MD5加密的时候,是否加key了。
当时我很纳闷,因为MD5本身已经是不可逆的了,需要破解只有穷举法。只是一个相当耗时间的工作量。
而且,android里面提供的MD5接口也没有说要加key啊
搜索了一圈,没找到什么有用的资料
今天在整理关于网络交互过程中身份校验的相关资料的时候,遇到了一句话

md5的话记得加盐。

瞬间脑部了一下,这里的加盐是不是就是那个面试我的哥哥说的Key啊
再使用“android md5的话记得加盐”进行搜索的时候,得到的内容就多了....

MD5为什么要加盐

虽然MD5本身是不可逆的,但是现在网络上面关于MD5这类加密算法的反解析数据库很多,还有专门的网站。看到那个网站上的说明,你会感觉有那么一点的颤抖

本站针对md5等全球通用加密算法进行反向解密,拥有全球最大的数据库,成功率全球第一,很多复杂密文只有本站才可解密,支持多种算法,实时查询记录超过24万亿条,共占用160T硬盘,成功率95%,一般的查询是免费的。 MD5在线解密破密
而且,生活中很多人使用的密码的强度都很弱,典型的是:123456
总之,给md5加盐,目前来看是很有必要的

如何加盐

这里的加盐就比较简单,也多种多样

  • 把username作为盐
    用password+username进行MD5加密,作为加密之后的结果;假如username可变的话,就不可取了
  • 用password明文的hashcode作为盐
  • 随机生成一串字符串作为盐。这里的盐,需要一起上传给服务器进行保存。
    Discuz论坛密码就是这么整的。

写在最好

给MD5加盐的目的,增加被破解的难度。

密码学的应用安全,是建立在破解所要付出的成本远超出能得到的利益上的。

Android 网络交互之MD5为什么要加盐的更多相关文章

  1. android网络交互之DNS优化知识整理

    android网络交互之DNS优化知识整理 之前的工作中,经常会遇到DNS解析出问题导致网络交互的操作无法正常进行. UnknownHostException 在很多的移动开发过程中,与服务端的交互的 ...

  2. android 网络交互

    一. 在Android中,发送和处理http请求实在太常见了,以至于我们经常需要写这方面的代码. Android中网络交互的代码不能在UI线程中执行,只能在额外的子线程中执行. 我一般的做法是通过创建 ...

  3. MD5 加密 以及 加盐加密

    这是MD5加密 - (NSString *)MD5Hash { const char *cStr = [self UTF8String]; unsigned char result[16]; CC_M ...

  4. Android 网络交互之下载断点续传

    一.概述 1.概念 断点续传主要用于下载,本文也主要讲述下载时的断点续传的逻辑思路.顾名思义,断点续传就是下载从中断的地方继续下载,一般是因为暂停或者网络故障导致的下载中断,当恢复下载的时候可以从已经 ...

  5. Android 网络交互之移动端与服务端的加密处理

    在开发项目的网络模块时,我们为了保证客户端(Client)和服务端(Server)之间的通信安全,我们会对数据进行加密. 谈到网络通信加密,我们可以说出:对称加密,非对称加密,md5单向加密,也能提到 ...

  6. Servlet和Android网络交互基础(3)

    在上一章中採用了最简单的创建service端代码方式,但在实际开发中一般都会採用比較成熟的框架.以下是完整的maven+spring mvc 创建service的方式 下载安装Eclipse 和jdk ...

  7. vue项目使用MD5进行密码加盐

    首先给项目安装MD5模块:npm install --save js-md5 使用方法有两种: 使用方法1:  在需要使用的项目文件中引入MD5:import md5 from 'js-md5'; 使 ...

  8. MD5—加密,加盐

    MD5的参考盐值:String salt = "212*)()()**()^&UYGbakdkj " ; MD5—加密工具类 package com.demo.tools; ...

  9. md5,md2加密加盐

    数组是没有重写object的toString()方法.byte[].toString()

随机推荐

  1. iso-开发基础知识-5-适配器

    个人学习总结仅供参考:欢迎拍砖 1.适配器:用于连接两种不同种类的对象. 2.分为2种:类适配,对象适配. 3.委托(Delegate)模式属于对象适配器: 4.何时使用适配器模式 书中的这幅图更好的 ...

  2. Apache Mina开发手冊之四

    Apache Mina开发手冊之四 作者:chszs,转载需注明. 博客主页:http://blog.csdn.net/chszs 一.Mina开发的主要步骤 1.创建一个实现了IoService接口 ...

  3. 配置vim之插件

    涉及linux平台下ctags, taglist插件 ctags是一个用于产生代码索引文件的插件,它产生的索引可以帮助我们更快的定位到特定位置. ctags支持很多语言,比如java, c, c++, ...

  4. Java 网络编程(二) 两类传输协议:TCP UDP

    链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/09/2951841.html 两类传输协议:TCP,UDP TCP TCP是Transfer C ...

  5. 删除链表的中间节点和a/b处节点

    [说明]: 本文是左程云老师所著的<程序员面试代码指南>第二章中“删除链表的中间节点和a/b处节点”这一题目的C++复现. 本文只包含问题描述.C++代码的实现以及简单的思路,不包含解析说 ...

  6. [IOI1996] USACO Section 5.3 Network of Schools(强连通分量)

    nocow上的题解很好. http://www.nocow.cn/index.php/USACO/schlnet 如何求强连通分量呢?对于此题,可以直接先用floyd,然后再判断. --------- ...

  7. openGL 旋转的图形 矩阵操作

    #include <windows.h> #ifdef __APPLE__ #include <GLUT/glut.h> #else #include <GL/glut. ...

  8. [置顶] WebService调用工具(AXIS2)

    package com.metarnet.util; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Meth ...

  9. 关于input标签的需要注意的几个小问题

    1.input元素没有结束标签,只有开始标签,即使写上结束标签也不起作用.如下 <input type="text" value="text" /> ...

  10. codeforces 417D. Cunning Gena 状压dp

    题目链接 D. Cunning Gena time limit per test 1 second memory limit per test 256 megabytes input standard ...