MD5和AES在项目中的使用方式与区别

目录

一、MD5

MD5据介绍

MD5特点

MD5用途

        1.防止被篡改

        2.防止直接看到明文

        3.防止抵赖(数字签名)

二、AES

AES介绍

AES工作流程

三、MD5和AES的区别


一、MD5

  • MD5据介绍

          MD5信息摘要算法(MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 标准中被加以规范。1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA-2。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。

  • MD5特点

       1. 输入任意长度的信息,经过处理,输出为128位的信息(数字指纹);

        2.不同的输入得到的不同的结果(唯一性);

        3.根据128位的输出结果不可能反推出输入的信息(不可逆);

  • MD5用途

        1.防止被篡改

        比如发送一个电子文档,发送前,我先得到MD5的输出结果a。然后在对方收到电子文档后,对方也得到一个MD5的输出结果b。如果a与b一样就代表中途未被篡改。

        比如我提供文件下载,为了防止不法分子在安装程序中添加木马,我可以在网站上公布由安装文件得到的MD5输出结果。

        SVN在检测文件是否在CheckOut后被修改过,也是用到了MD5。

        2.防止直接看到明文

        现在很多网站在数据库存储用户的密码的时候都是存储用户密码的MD5值。这样就算不法分子得到数据库的用户密码的MD5值,也无法知道用户的密码。

        当用户登录的时候,系统把用户输入的密码计算成MD5值,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。

        3.防止抵赖(数字签名)

        这需要一个第三方认证机构。例如A写了一个文件,认证机构对此文件用MD5算法产生摘要信息并做好记录。若以后A说这文件不是他写的,权威机构只需对此文件重新产生摘要信息,然后跟记录在册的摘要信息进行比对,相同的话,就证明是A写的了。这就是所谓的“数字签名”。

二、AES

  • AES介绍

        高级加密标准(Advanced Encryption Standard):又称Rijndael加密法,为最常见的对称加密算法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES(Data Encryption Standard),已经被多方分析且广为全世界所使用。

  • AES工作流程

        AES不同于MD5,它是一种可逆的加密算法,使用自定义的秘钥来进行加密/解密操作。

        明文

没有经过加密的数据。

        密钥

用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。密钥为接收方与发送方协商产生,但不可以直接在网络上传输,否则会导致密钥泄漏,通常是通过非对称加密算法加密密钥,然后再通过网络传输给对方,或者直接面对面商量密钥。密钥是绝对不可以泄漏的,否则会被攻击者还原密文,窃取机密数据。

        AES加密函数

设AES加密函数为E,则 C = E(K, P),其中P为明文,K为密钥,C为密文。也就是说,把明文P和密钥K作为加密函数的参数输入,则加密函数E会输出密文C。

        密文

经加密函数处理后的数据

        工作流程

三、MD5和AES的区别

  • MD5:MD5是一种不可逆的加密算法,使用时我们只需要给出要加密的明文即可对明文进行加密。
            在项目中我们通常用于密码管理:当我们需要保存某些密码信息以用于身份确认时,如果直接将密码信息以明码方式保存在数据库中,不使用任何保密措施,系统管理员就很容易能得到原来的密码信息,这些信息一旦泄露, 密码也很容易被破译。为了增加安全性,我们会使用MD5对数据库中需要保密的信息进行加密,这样,即使有人得到了整个数据库,如果没有解密算法,也不能得到原来的密码信息。
  • AES:AES是一种可逆的对称加密算法,使用时需要给出要加密的明文和自定义秘钥。
            平时我们在项目中主要是为了达到数据在页面之间传输的过程中数据不会显式的出现在地址栏中的目的。这时我们在数据传输前使用自定义秘钥的AES对数据进行加密,在传输后再使用相同的自定义秘钥对数据进行解密即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值