AES128加密算法完整实现

      概述

原本想把自己AES加密算法的整个实现过程给详细复述下来,分享给想学习的同学,也方便自己复习,但后来发现该工作量太大,加上作业太多没有过多的时间去写。所以就想把自己在学习的过程中多遇到的好的文章进行汇总,避免重复性的工作,因为我感觉有的文章的介绍和配图写的非常好,再次重复也没有意义。本文里我会将文章的链接附上,如有侵权,敬请告知!

因为最近要完成课程作业,实现AES128加解密,本以为就是一个简单的算法实现,后来发现AES加密的每一步都挺难,而且都涉及到我没听过的概念,所以最近看了很多帖子、资料。最终终于能够解决这个问题。关于AES算法的介绍,网上有很多的帖子,所以我就不进行赘述了,我只是希望将我遇到的一些比较难以理解的点进行详细的叙述。

实现AES算法主要包括以下学习步骤:

  1. GF(2^8)域上的多项式运算
  2. 扩展的欧几里德算法
  3. 生成S盒
  4. 生成逆S盒
  5. S盒置换
  6. 行移位
  7. 列混合
  8. 生成秘钥
  9. 循环加密

其中1、2、3、4步都跟S盒生成有关,根据我所看的一些博客,S盒的生成涉及到数论的基础知识。如果没有基础的话,1、2是要专门去学习的,我在这两步上花费了很多时间。但是在网上也可以找到很多AES算法,他们用的是现成的S盒,没有前4步,直接用现成的S盒置换,这样相对会容易一些。但是本着刨根问底和多学习知识的原则,我还是去学习了S盒的生成方式。第5步就是将每一个字符进行查表替换,没有什么难以理解的地方,所以相对而言比较容易。第6步应该是整个过程当中最简单的一步了,就是进行一个循环移位。第7步列混合涉及到矩阵和多项式的乘法,所以还是有一定难度,。。。

如果想从整体上了解AES加密的完整过程,那么下面几篇文章不管从叙述还是插图上来看都是很不错的,几篇文章介绍的方式不同,但是原理都是一样的,对比结合着看会更有帮助:

AES加密 - block2016 - 博客园

AES算法简介_Jimmy.li的博客-优快云博客_aes算法

密码算法详解——AES - ReadingLover - 博客园

http://www.alonemonkey.com/2016/05/25/aes-and-des/

但是仅从这几篇文章来看的话,对于像我这样的小白而言还是没有办法实现的,因为各个步骤介绍的并不具体,尤其是对于缺少基本数学知识学习的同学很难理解。所以这几篇文章可以作为整体进度的把控,接下来看怎么一步步学习实现。

     S盒

我在学习这个算法的时候,在S盒的生成及置换上花费的时间是最多的。可能是因为基础较差,所以需要学习的东西比较多,所以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值