用java实现AES密码算法(一)
来源:互联网 发布:python 自动登录签到 编辑:程序博客网 时间:2024/06/08 15:23
继上次的计算机网络的socket实验之后,又迎来了新的挑战,那就是密码学的实验。
这个实验要求我实现AES算法的加密与解密,那么什么是AES算法呢。
AES算法是一种对称密码算法
一下是百度对它的介绍:
高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。
- AddRoundKey — 矩阵中的每一个字节都与该次轮秘钥(round key)做XOR运算;每个子密钥由密钥生成方案产生。
- SubBytes — 通过个非线性的替换函数,用查找表的方式把每个字节替换成对应的字节。
- ShiftRows — 将矩阵中的每个横列进行循环式移位。
- MixColumns — 为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每列的四个字节。
当然,只懂得它的原理是不够的,我们怎么通过编程来实现呢?用什么实现呢?当然,这个想都不用想,博主就决定用博主的最爱——JAVA来做这次实验。
通过大量的查阅书籍,以及充分利用网络资源,博主把需要知道的列在下面:
在JAVA的世界里,密码学是其安全模块的重要组成部分。
JAVA的安全领域总共分为4个部分:JCA(Java Cryptography Architecture,Java加密体系结构),JCE(Java加密拓展包),JSSE(Java安全套接字拓展包),JAAS(Java鉴别安全服务)
JCA提供基本的加密框架,如证书、数字签名、消息摘要和密钥对产生器。
JCE在JCA的基础上做了拓展,提供了各种加密算法、消息摘要算法和秘钥管理等功能
下面我们要对JAVA提供的包要有了解:
java.security:java.security包作为安全框架提供类和接口。这是探索JAVA加密世界的第一步。通过该包中的JAVA实现,仅能完成消息摘要算法的实现,并且其源代码是可见的,要实现真正的加密与解密,要参考javax.crypto包中的内容。
SubBytes(字节替换)的实现(思路):使用一个表(被称为S盒)对分组进行逐一字节替换。S盒是AES算法定义的矩阵,把State中每个字节的高4位作为行值,低4位作为列值,然后取出S一盒中对应行列的元素作为输出。这个步骤提供了AES算法加密的非线性变换能力。S盒与有限域乘法逆元有关,具有良好的非线性特性。为了避免简单代数攻击,S盒结合了乘法逆元及可逆的仿射变换矩阵建构而成。
- 用java实现AES密码算法(一)
- AES密码算法的实现
- AES密码算法的实现
- java实现AES算法
- AES算法 Java实现
- 用verilog实现AES密码算法1---一些理论准备
- 用java实现AES加解密算法
- AES算法的JAVA实现
- AES算法java实现浅析
- AES算法加密java实现
- AES算法Java实现浅析
- AES加密解密算法的FPGA实现(一)
- AES密码算法系列2:AES密码算法设计与实现
- AES密码算法
- 【JAVA】AES算法的java实现
- java实现RSA和AES加密(一)
- AES加密解密算法的Java实现
- AES算法实现_加密 JAVA
- Hadoop分布式文件系统(1)
- C++简单排序算法之冒泡排序
- BZOJ P1430小猴打架
- PAT--1130. Infix Expression(中序加括号)
- MYSQL的基础使用之MARIADB安装、表的 创建 删除 修改
- 用java实现AES密码算法(一)
- 冒泡排序C++实现
- JavaScript学习-RegExp类型
- HDFS分布式文件系统(2) HDFS的java接口
- Python event事件
- 冒泡排序(lua实现)
- 面向对象——包整理
- 联想S41-70拆机换内存条
- Shell中反引号(`)与$()用法的区别