7.java 加解密技术系列之 AES

时间:2022-02-19 00:22:37

java 加解密技术系列之 AES

  • 概念
  • 原理
  • 应用
  • 代码实现
  • 结束语

这篇文章继续介绍对称加密算法,至于今天的主角,不用说,也是个厉害的角色 — — AES。AES 的出现,就是为了来替代原先的 DES 标准。现在来说,AES 的用途还是非常广泛的。

概念

AES,
全称为“Advanced Encryption Standard”,中文名“高级加密标准”,在密码学中又称 Rijndael
加密法,是美国联邦*采用的一种区块加密标准。AES 加密算法作为新一代的数据加密标准汇聚了强安全性、高性能、高效率、易用和灵活等优点。AES
设计有三个密钥长度:128,192,256 位。相对而言,AES 的 128 密钥比
DES 的 56 密钥强了 1021 倍。
7.java 加解密技术系列之 AES

原理

AES
加密算法主要包括三个方面:轮变化、圈数和密钥扩展。AES 是分组密钥,算法输入 128 位数据,密钥长度也是 128 位。用 Nr
表示对一个数据分组加密的轮数。每一轮都需要一个与输入分组具有相同长度的扩展密钥 Expandedkey(i) 的参与。由于外部输入的加密密钥 K
长度有限,所以在算法中要用一个密钥扩展程序 (Keyexpansion)
把外部密钥 K 扩展成更长的比特串,以生成各轮的加密和解密密钥。
7.java 加解密技术系列之 AES
  • AES 算法利用外部输入密钥 K (密钥串的字数为Nk),通过密钥的扩展程序得到共计 4(Nr+1) 字的扩展密钥。它涉及如下三个模块:
① 位置变换 (rotword) — — 把一个 4 字节的序列 [A,B,C,D] 变化成 [B,C,D,A];
② S 盒变换 (subword) — — 对一个 4 字节进行 S 盒代替;
③ 变换 Rcon[i] — — Rcon[i] 表示 32 位比特字 [xi-1,00,00,00]。

应用

CCMP  是一种基于 AES 加密算法和 CCM 认证机制,可以大大提高无线网络的安全程度。
WPA(无线局域网受保护访问协议)是一种新型的无线安全技术,它是 IEEE802.11i 的一个子集,核心是 IEEE802.1x 和 TKIP,可用以下公式表示几者之间的关系:
WPA=802.1x+EPA+TKIP+MIC
其中 MIC(信息完整性检查码)是 CCMP 加密技术中的一个重要组成部分:
CCMP 首先用 CBC-MAC 数据源认证模式对消息中的明文头、明文头长度和负载计算出一个 MIC,然后使用计数模式对负载和 MIC 进行加密,产生 128 比特的密匙,其中计数模式的核心算法就是 AES 加密算法。

代码实现

AES 的代码实现,这里就不再提供了,可以参考DES 中的代码实现,只需要把 算法定义换成 AES 即可,而且,在 DES 的代码中也都有详细的说明,需要的可以跳过去参考一下。

结束语


到对称加密,在开发中是经常用到的加密算法,主要是涉及到的一些敏感数据,比如,个人信息、家庭住址、手机号码、密保问题、密保答案等等。至于密码什么
的,一般都不怎么用对称加密算法(当然也有用的),密码这一类的信息,可以考虑用单向加密算法,比如,MD5、或者 SHA
等,考虑到安全性,可以外加一点 salt,当然,这些在开发的时候就是需要考虑的事了,这里就不细说了。