java 加解密技术系列之 AES

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

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

概念

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

原理

AES
加密算法主要包括三个方面:轮变化、圈数和密钥扩展。AES 是分组密钥,算法输入 128 位数据,密钥长度也是 128 位。用 Nr
表示对一个数据分组加密的轮数。每一轮都需要一个与输入分组具有相同长度的扩展密钥 Expandedkey(i) 的参与。由于外部输入的加密密钥 K
长度有限,所以在算法中要用一个密钥扩展程序 (Keyexpansion)
把外部密钥 K 扩展成更长的比特串,以生成各轮的加密和解密密钥。

  • 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,当然,这些在开发的时候就是需要考虑的事了,这里就不细说了。

7.java 加解密技术系列之 AES的更多相关文章

  1. Java 加解密技术系列文章

    Java 加解密技术系列之 总结 Java 加解密技术系列之 DH Java 加解密技术系列之 RSA Java 加解密技术系列之 PBE Java 加解密技术系列之 AES Java 加解密技术系列 ...

  2. 8.Java 加解密技术系列之 PBE

    Java 加解密技术系列之 PBE 序 概念 原理 代码实现 结束语 序 前 边的几篇文章,已经讲了几个对称加密的算法了,今天这篇文章再介绍最后一种对称加密算法 — — PBE,这种加密算法,对我的认 ...

  3. 6. Java 加解密技术系列之 3DES

    Java 加解密技术系列之 3DES 序 背景 概念 原理 代码实现 结束语 序 上一篇文章讲的是对称加密算法 — — DES,这篇文章打算在 DES 的基础上,继续多讲一点,也就是 3 重 DES ...

  4. 5.Java 加解密技术系列之 DES

    Java 加解密技术系列之 DES 序 背景 概念 基本原理 主要流程 分组模式 代码实现 结束语 序 前 几篇文章讲的都是单向加密算法,其中涉及到了 BASE64.MD5.SHA.HMAC 等几个比 ...

  5. 11.Java 加解密技术系列之 总结

    Java 加解密技术系列之 总结 序 背景 分类 常用算法 原理 关于代码 结束语 序 上一篇文章中简单的介绍了第二种非对称加密算法 — — DH,这种算法也经常被叫做密钥交换协议,它主要是针对密钥的 ...

  6. 10.Java 加解密技术系列之 DH

    Java 加解密技术系列之 DH 序 概念 原理 代码实现 结果 结束语 序 上一篇文章中简单的介绍了一种非对称加密算法 — — RSA,今天这篇文章,继续介绍另一种非对称加密算法 — — DH.当然 ...

  7. 9.Java 加解密技术系列之 RSA

    Java 加解密技术系列之 RSA 序 概念 工作流程 RSA 代码实现 加解密结果 结束语 序 距 离上一次写博客感觉已经很长时间了,先吐槽一下,这个月以来,公司一直在加班,又是发版.上线,又是新项 ...

  8. 4.Java 加解密技术系列之 HMAC

    Java 加解密技术系列之 HMAC 序 背景 正文 代码 结束语 序 上一篇文章中简单的介绍了第二种单向加密算法 — —SHA,同时也给出了 SHA-1 的 Java 代码.有这方面需求的童鞋可以去 ...

  9. 3.Java 加解密技术系列之 SHA

    Java 加解密技术系列之 SHA 序 背景 正文 SHA-1 与 MD5 的比较 代码实现 结束语 序 上一篇文章中介绍了基本的单向加密算法 — — MD5,也大致的说了说它实现的原理.这篇文章继续 ...

随机推荐

  1. plist文件的相关操作

    本文概要 1.plist文件的简介 2.在Xcode中创建plist文件 3.在Xcode中将plist文件转换成数组或者字典对象 4.将数组或者字典对象转换成plist文件并且存储 详细介绍 1.p ...

  2. 漫谈PHP代码规范

    前言 虽说PHP是世界上最好的语言,但是写出来的PHP代码却往往不是最美观的.究其原因,可能正式因为PHP简单易上手,适合快速迭代的特性,导致了我们沉浸在迅速完成需求迭代的窃喜中,却忘记了规范性.忽略 ...

  3. Python with

    简介 在编程中会经常碰到这种情况:有一个特殊的语句块,在执行这个语句块之前需要先执行一些准备动作:当语句块执行完成后,需要继续执行一些收尾动作.例如,文件读写后需要关闭,数据库读写完毕需要关闭连接,资 ...

  4. JQuery处理DOM元素-属性操作

    JQuery处理DOM元素-属性操作 //操作元素的属性: $('*').each(function(n){ this.id = this.tagName + n; }) //获取属性值: $('') ...

  5. C++ struct 初始化的问题

    struct student { int age; string name; int id; }; 初始化: student st1={10, "li ming", 01}; 修改 ...

  6. Js插件开发

    简易JS插件开发,本文效果是一个简单的弹出层,意在记录插件的封装Demo. 完整源码压缩包:demo.rar 效果图(如下): 插件脚本: /** * 节点配置属性方式配置参数:专业的做法是配置到,每 ...

  7. stm32中的延时函数

    //粗延时函数,微秒 void delay_nus(u16 time) { u16 i=0; while(time--) { i=10;  //自己定义 while(i--) ; } } //毫秒级的 ...

  8. CSAcademy Beta Round #5 Long Journey

    题目链接:https://csacademy.com/contest/arhiva/#task/long_journey/ 大意是有一张无向不带权的图,两个人同时从s点出发,分别前往a点和b点,且每个 ...

  9. 玩转SSH端口转发

    SSH有三种端口转发模式,本地端口转发(Local Port Forwarding),**远程端口转发(Local Port Forwarding)**以及**动态端口转发(Dynamic Port ...

  10. JVM 方法调用之动态分派

    1. 动态分派 一个体现是重写(override).下面的代码,运行结果很明显. public class App { public static void main(String[] args) { ...