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. redis的分布式解决方式--codis

    codis是豌豆荚开源的分布式server.眼下处于稳定阶段. 原文地址:https://github.com/wandoulabs/codis/blob/master/doc/tutorial_zh ...

  2. Media Queries for Standard Devices

    /* Smartphones (portrait and landscape) ----------- */ @media only screen and (min-device-width : 32 ...

  3. createNewFile创建空文件夹与createTempFile创建临时文件夹

    创建要注意的地方如下: <pre name="code" class="java"> File类的createNewFile根据抽象路径创建一个新的 ...

  4. elasticsearch-5.0.0初见

    基础概念 Elasticsearch有几个核心概念.从一开始理解这些概念会对整个学习过程有莫大的帮助. 接近实时(NRT) Elasticsearch是一个接近实时的搜索平台.这意味着,从索引一个文档 ...

  5. [LeetCode]题解(python):005-Longest Palindromic Substring

    题目来源: https://leetcode.com/problems/longest-palindromic-substring/ 题意分析: 这道题目是输入一段不超过1000的字符串,输出最长的回 ...

  6. chroot命令

    CHROOT就是Change Root,也就是改变程序执行时所参考的根目录位置.通过chroot机制来更改某个进程所能看到的根目录,即将某进程限制在指定目录中,保证该进程只能对该目录及其子目录的文件有 ...

  7. selenium 学习笔记 ---新手学习记录(4) 问题总结(java)-autoit3脚本使用

    1.安装autoit3 下载地址:点我下载 (提取码:9633) 提取码 下载完成后,一直下一步即可 2.上传头像使用脚本 代码如下: ControlFocus("打开",&quo ...

  8. hdoj 1251 统计难题(字典树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1251 思路分析:该问题要求求出以某个字符串为前缀的单词数目,通过使用字典树,在字典树中添加count记 ...

  9. MongoDB初探系列之二:认识MongoDB提供的一些经常使用工具

    在初探一中,我们已经能够顺利的将MongoDB在我们自己的机器上跑起来了. 可是在其bin文件夹以下另一些我们不熟知的工具.接下来,将介绍一下各个小工具的用途以及初探一中MongoDB在data文件夹 ...

  10. vue开发体验

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...