MD5与AES浅谈

Posted GooReey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MD5与AES浅谈相关的知识,希望对你有一定的参考价值。

一、MD5简介

MD5全称为信息-摘要算法(哈希算法),是计算机安全领域的散列函数,用于确保消息的完整性。另外摘要算法还有SHA1。

MD5是一种单向加密算法,它的加密不可逆,它将任意长度的字符串,经过计算后生成固定长度的数据,一般为16位。

二、MD5的用途

1、消息完整性

每份数据生成的MD5码不同,所以可以把MD5码和数据一块发送,在对端使用MD5加密,再与接收的MD5码进行对比,保证数据的正确性。

2、安全访问认证

用于传递用户账户信息和密码到mysql数据库,客户端发送到服务器的只是一段128位的摘要,服务器拿到后直接将其存入数据库,下次登录只需与服务器的密文进行对比即可,这样就保护了用户的信息,即便是后台人员也无法获取用户的账户密码。

三、其它加密算法

1、非对称加密

非对称加密是双方各自产生自己的秘钥,然后将自己的加密秘钥传递给对方,在使用时先给数据使用对方的加密秘钥加密,再发送给对方,各自使用自己的解密秘钥来解密数据。

2、对称加密

双方使用约定的加密算法和解密秘钥,然后进行数据传输。

对称加密解密速度慢,安全性高;非对称加密速度快,安全性不高。

所以经常使用非对称加密床底对称加密的秘钥,然后使用对称加密来加密传递的数据。

四、AES加密

AES加密是一种对称加密算法。

AES加密有三种长度,分别是128位、192位、256位。

AES加密是一种分组加密,它将明文划分一组一组的,每组明文长度相等,一次加密一组明文,直到全部加密,分组长度为128位(16字节),明文长度不足的进行填充。AES加密是字节加密,使用时要转成字节码。明文分组用字节单位的正方形矩阵表示,一般称为状态矩阵。

128位会进行10轮加密,一轮加密步骤:字节代换、行位移、列混合、轮秘钥加。在最后一轮不进行列混合;解密反过来,分为轮密钥加,逆列混合、逆行位移、逆字节代换,第一步不进行逆列混合。

字节代换:AES加密定义了一个S盒和一个逆S盒。将状态矩阵中的元素查表进行替换。

行移位:将行位移进行左循环位移,即状态矩阵的第N行左移N个字节。

列混合变换:同过将行移位矩阵与固有矩阵相乘得到的混合矩阵。

轮密钥加:将128位轮密钥Ki同状态矩阵中的数据进行逐位异或操作,如下图所示,密钥Ki中每个字W[4i],W[4i+1],W[4i+2],W[4i+3]为32位比特字,包含4个字节,他们的生成算法下面在下面介绍。轮密钥加过程可以看成是字逐位异或的结果,也可以看成字节级别或者位级别的操作。也就是说,可以看成S0 S1 S2 S3 组成的32位字与W[4i]的异或运算。 

 更多AES的精彩内容可以查看:AES加密算法的详细介绍与实现

 

原创不易,转载自:https://blog.csdn.net/heng_c/article/details/79779904

以上是关于MD5与AES浅谈的主要内容,如果未能解决你的问题,请参考以下文章

浅谈浅克隆(shallow clone)和 深克隆(deep clone)

浅谈iOS中的RunLoop

浅谈常用的Web安全技术手段

我的Linux,我做主!浅谈MD5校验文件完整一致性

浅谈 PHP 中的多种加密技术及代码示例

浅谈JAVA11中新增的加密算法