轮密钥加/Add Round Key

铭文与密钥逐个进行异或

2. 字节代换/SubBytes

轮密钥加的结果带入sbox进行字节代换

const unsigned char sbox[256] = {

/* 0     1    2      3     4    5     6     7      8    9     A      B    C     D     E     F */

0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76,   /* 0 */

0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0,   /* 1 */

0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,   /* 2 */

0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75,   /* 3 */

0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84,   /* 4 */

0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,   /* 5 */

0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8,   /* 6 */

0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2,   /* 7 */

0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,   /* 8 */

0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb,   /* 9 */

0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79,   /* A */

0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,   /* B */

0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a,   /* C */

0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e,   /* D */

0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,   /* E */

0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 }; /* F */

3. 行移位/ShiftRows

移位示意图如下

代码如下

4. 列混合/MixColumns

5. 密钥扩展\Key Extend

6. 完整实现

aes128算法c语言实现,AES128 C语言实现相关推荐

  1. AES128算法C语言实现(附每轮执行结果以供调试)

    关于AES128算法的文章网上已经很多了,之所以要写这篇是因为前两天自己在写代码调试的时候遇到一些问题,底层函数单独调试的时候是好的,但是综合在一起执行10轮操作以后总的结果却是不对的,所以一下子很难 ...

  2. 最小生成树实验报告c语言,算法与程序设计实验最小生成树(c语言).ppt

    算法与程序设计实验最小生成树(c语言).ppt 最小生成树 问题分析: 由于在每两个城市之间都可以建立一条通信线路,n个城市之间最多可能设置n(n-1)/2条线路,而每条线路都要付出一定的经济代价,因 ...

  3. A*算法解决八数码问题 Java语言实现

    A*算法解决八数码问题 Java语言实现 参考文章: (1)A*算法解决八数码问题 Java语言实现 (2)https://www.cnblogs.com/beilin/p/5981483.html ...

  4. DL之RNN:人工智能为你写代码——基于TF利用RNN算法实现生成编程语言代码(C++语言)、训练测试过程全记录

    DL之RNN:基于TF利用RNN算法实现生成编程语言代码(C语言).训练&测试过程全记录 目录 输出结果 监控模型 训练&测试过程全记录 训练的数据集展示 输出结果 1.test01 ...

  5. c语言排序算法 应用与实现,基于C语言排序算法改进与应用.doc

    基于C语言排序算法改进与应用 基于C语言排序算法改进与应用 摘 要:介绍了程序语言中排序的原理及应用,阐述了基于C语言的三种主要排序方法,提出了每种排序方法的改进,计算出改进后算法的时间复杂度,编写了 ...

  6. aes-128算法加密_加密算法问题-人工智能中的一种约束满意问题

    aes-128算法加密 The Crypt-Arithmetic problem in Artificial Intelligence is a type of encryption problem ...

  7. 机器学习:异常检测算法Seasonal Hybrid ESD及R语言实现

    机器学习:异常检测算法Seasonal Hybrid ESD及R语言实现 参考文章: (1)机器学习:异常检测算法Seasonal Hybrid ESD及R语言实现 (2)https://www.cn ...

  8. C语言描述算法的常用方法是,认识C语言 -算法描述的5种方法

    在 C语言中,有 5 种常用的算法描述方法:自然语言.流程图.N-S 图.伪代码和程序设计语言. 1. 自然语言描述算法 上一讲<算法是什么>中给出的解决问题的算法 a.算法 b 和算法 ...

  9. 贪心算法之活动安排问题C语言代码

    贪心算法之活动安排问题C语言 问题描述 该问题要求高效地安排一系列争用某一公共资源的活动. n:活动的个数,其中每个活动都要求使用同一资源,如演讲会场等.而且在同一时间内只有一个活动能使用这一资源. ...

  10. 算法:动态规划窃贼问题C语言实现

    算法:动态规划窃贼问题C语言实现 目录 算法:动态规划窃贼问题C语言实现 第一章 问题描述 1.1问题描述 第二章 算法思想及算法设计分析 2.1算法思想 2.2设计算法 2.3算法分析 2.4填表结 ...

最新文章

  1. H.264NLU和RTSP协议理解
  2. 发挥主观能动性,才可以能常人之所不能 - 阿里云MVP 杨洋专访
  3. python3.6安装-python3.6的安装及注意事项
  4. C语言文件读写(2)-文本文件写操作
  5. gensim读取已训练模型LDA模型的模型与dictionary
  6. 中间表该怎么查询_「日语四级」日语四级准考证号忘了怎么查成绩
  7. CentOs中mysql的安装与配置
  8. GitHub 学习和使用
  9. 如何成熟处理客户反对意见
  10. Maven引入数据库JDBC驱动
  11. 焊缝标注vlx实用程序_【CAD自动标注插件下载】CAD自动标注插件yjbz.VLX v1.0 最新版-开心电玩...
  12. JAVA 经纬度转换成直角坐标系,以及直角坐标系转换成经纬度算法
  13. 批量采集抓取淘宝宝贝上传,采集商品软件
  14. GYM 101350 M. Make Cents? ( STL
  15. 协方差矩阵、大数定律、牛顿迭代法
  16. GEE学习笔记(基础篇)更新中
  17. 文化产权交易系统-大盘行情实时掌控
  18. 20行代码做一个简易微信群发工具需要哪些单词
  19. Docker安装配置Jenkins教程
  20. 时间戳转换为正常时间

热门文章

  1. 磁盘阵列RAID0、RAID1、RAID10、RAID5、RAID50、RAID6
  2. android弧形左右滑动空间,自定义LayoutManager 实现弧形以及滑动放大效果RecyclerView...
  3. 2012互联网开发应该关注的
  4. 高端Uart TFT 串口屏控制芯片
  5. 做IP SAN时出现的“连接失败”解决!
  6. 教程篇(6.0) 13. 数据泄露预防 (DLP) ❀ FortiGate 安全 ❀ Fortinet 网络安全专家 NSE 4
  7. php去掉字符串含有的控制字符。
  8. python3.6安装tkinter
  9. 迪士尼公布星战酒店更多细节,强调这不止是酒店
  10. java基本微信小程序的高校自习室预约占座系统 uniapp 小程序