美文网首页
加密学学习笔记(- )散列算法之 MD5

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

作者: Zax_Smile | 来源:发表于2017-02-24 11:14 被阅读108次

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

    密码学的简介

    据记载,公元前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加密的时候,客户端服务端在加密之后都不知道明文是什么,只是通过加密后的字段进行存储对比。

    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

          本文链接:https://www.haomeiwen.com/subject/iukuwttx.html