加密学学习笔记(- )散列算法之 MD5

最近的心情很复杂,一开始雄纠纠气昂昂的重新开始,可是后来发现好难。精心下来,发现还是需要不断地充实自己。

密码学的简介

据记载,公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用。

加密算法的介绍

密码技术分为两类

对称加密算法 

加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的秘密。安全系统比较高 只能通过因式分解

主要作用于: 敏感信息。

常见的算法包括: 

DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。

3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。

AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;


非对称加密算法

采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。

常见的算法包括:

RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;

DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);

ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。


散列算法  

 MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法。

SHA(Secure Hash Algorithm):可以对任意长度的数据运算生成一个160位的数值;

特点

NO1、算法公开

NO2、对相同的数据加密,得到的结果是一样的

NO3、对不同的数据加密,得到的结果定长  32位 (a-z 0 -9)

NO4、信息摘要,信息的“指纹“用来做识别

NO5、不能反算

用途

密码,搜索,版权等。

下边着重讲解一下MD5

MD5很多人说其实不算是加密算法,只要算做签名加密

他的一个加密的原理过程如下:


加密学学习笔记(- )散列算法之 MD5_第1张图片

所以在使用MD5加密的时候,客户端服务端在加密之后都不知道明文是什么,只是通过加密后的字段进行存储对比。

MD5现在其实是不太安全的

破解:

== 目前破解的散列只要MD5 ,SHA1 也是在边缘

---散列碰撞,找出不同的数据,使用MD5之后能够得到相同的散列结果。(无数种!!)


基本的MD5安全方式

1、加”盐“  要求”盐要足够长 足够无序 “加盐是早期的加密方式。现在来说已经不安全。

缺点: 如果用于加盐,在客户端本地存储,要是被破译,会很不安全,同时对于版本的升级也不友好。

HMAC 

HMAC是密钥相关的哈希运算消息认证码,HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。------ 通俗来讲就是给定一个密钥,对明文进行加密,并且做了“两次散列”  -- 32位字符。

使用思路:

服务器端:

1、用户输入账号和密码

2、本地查秘钥,如果没有秘钥,向父亲器获取,(为了安全性,本地存储用KetChain)

这个就相当于一个设备锁,通过本地的秘钥,锁定了设备。有了这个密钥就是有了这个设备,也是目前比较流行的最安全的加密方式。

登录成功记住密码:

1、记住密码直接发送服务器,加密保存 --- 反算解密显示

2、保存密码到本地

服务器:

账号  -- 密码  -- 加密之后的密码


HMAC安全性设置

虽然你使用了HMAC加密,但是中间人还是可以对你的密码等进行攻击,中间人可以得到你的请求地址,自己进行请求获取。

防攻击法术


客服端

(加密后密码 + “当时的日期时间到分”) .MD5  例如当时的时间为 (加密后密码 + “201702241111”).MD5

服务端 

(加密之后的密码 + “201702241112”). MD5 || (加密之后的密码 + “201702241111”). MD5 进行匹配对比

小知识点讲解

keyChain --  钥匙串访问  

注意点: 在使用的过程中,需要开启,否则无效


开启KeyChain

可以使用第三方 SSKeyChain

理解为给我一个密码,告诉我他属于哪个App的账号

SSkeyChain setPasWord:(密码) forSerVice (APP唯一报标识  MD5) :account(账号 加盐)


指纹和密码的区别

指纹只能做暂时二次验证,不能做登录

密码代表你是这个账号的主人!   指纹代表你是这个手机的主人。


可以写的比较乱,但是还是希望不光可以帮助自己,希望也可以帮助大家。

你可能感兴趣的:(加密学学习笔记(- )散列算法之 MD5)