文档章节

AES256/128 纯软件加解密时间效率测试--以Cortex-M0与M3 MCU为例

H
 HowieXue
发布于 2017/08/02 11:12
字数 607
阅读 297
收藏 0

AES256/128 纯软件加解密时间效率测试–以Cortex-M0与M3 MCU为例

  • 一、测试环境与方法
  • 二、测试代码介绍(以AES256为例)
  • 三、测试结果与抓包截图

一、测试环境与方法:

1、测试环境:MCU 为STM32F030(Cortex-M0)、STM32F103(Cortex-M3),主频分别统一设置为24M、48M

2、加解密算法:AESCBC-256以及128

3、测试方法:输入不同数据量,通过GPIO翻转法获取软件执行AES加解密所耗的时间


二、测试代码介绍(以AES256为例)

测试代码很简单,就是将一个GPIO拉高,在AES加解密时拉低,并用逻辑分析仪进行抓包或者示波器查看低电平的间隔。

这里以AESCBC256代码为例:(所有数据仅供测试所用)

准备AES 参数(key、iv、testdata等)

const unsigned char AES_key[32]      = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};

const unsigned char AES_iv[16]       = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

unsigned char testdata[]= {
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 以下省略, 想测多少就输入多少数据 。。。}

执行AES加解密 ,同时反转IO电平

void AesTest(void)
{
  int testdata_Len;
  testdata_Len=sizeof(testdata);
  Aes enc;
    for(int i=0; i<100;i++)
    {
    /******** 加密过程 ************/
    HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_SET);
    AesSetKey(&enc, AES_key, sizeof(AES_key), AES_iv, AES_ENCRYPTION);//初始化AES加密参数,IO电平为高 
    HAL_Delay(1);//delay 1 ms为加密,2ms为解密
    HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_RESET);    
    AesCbcEncrypt(&enc, (byte *)testdata, (byte *)testdata,   testdata_Len);//执行加密函数,此时电平为低
    HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_SET);
    HAL_Delay(2);
     /******** 解密过程 ************/ 
     AesSetKey(&enc, AES_key, sizeof(AES_key), AES_iv, AES_DECRYPTION);//初始化AES解密参数,IO电平为高
    HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_RESET);    
    AesCbcDecrypt(&enc, (byte *)testdata, (byte *)testdata,   testdata_Len);////执行解密函数,此时电平为低
    HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_SET);
    }

三、测试结果与抓包截图

1、主频统一设置为24M

这里写图片描述

附部分I2C抓包截图:

1024byte时M3工作在24M主频:

这里写图片描述

1024byte时M0工作在24M主频:

这里写图片描述

2、主频设置为48M

基于STM32F030C8(Cortex-M0)芯片,工作在48M主频:
这里写图片描述

附部分I2C抓包截图:

1024 – AES256 :

这里写图片描述

128 – AES256:

这里写图片描述

16 - AES256:

AES256

由此可见,AES(Advanced Encryption Standard) 加密算法相比于RSA等对称加密算法是非常快的。。


欢迎转载,Howie原创作品,本文地址:

http://blog.csdn.net/HowieXue/article/details/76549487

谢谢

© 著作权归作者所有

H
粉丝 0
博文 13
码字总数 12540
作品 0
私信 提问
STM32开发 -- STM32初识

一、STM32 32 位 MCU 系列概述 参看:STM32 微控制器 参看:维基百科 – STM32 STM32 系列 32 位闪存微控制器基于 ARM® Cortex® M 处理器。 它提供的 32 位产品系列,具有超高性能、实时功...

qq_29350001
2018/05/19
0
0
Jlink使用技巧之J-Scope虚拟示波器功能

J-Link简介 J-Link是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器。简单地说,是给一个JTAG协议转换盒。其连接到计算机用的是USB接口,而到目标板内部用的还是jtag协议。它完成了一个从...

whik
2018/10/29
0
0
国产实时操作系统 - RT-Thread

RT-Thread是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集合开源社区力量开发而成,具有极小内核、稳定可靠、简单易用、高度可伸缩、组件...

午夜熊
2009/12/28
35.8K
3
STM32 之 在线升级(IAP)图示详解

版权声明:进步始于交流,收获源于分享!转载请保留原文出处,谢谢! https://blog.csdn.net/ZCShouCSDN/article/details/83793309 IAP 是啥   IAP( In Application Programming)即在应用...

ZCShouCSDN
2018/11/06
0
0
中国开源嵌入式实时操作系统--μTenux

μTenux是由大连悠龙软件科技有限公司的团队进行维护开发的开源免费的嵌入式实时操作系统。该公司从2008年开始研发,内核是采用日本非常成熟的T-kernel,有30年的历史,广泛的应用于汽车电子...

Tenux
2013/09/23
4.6K
1

没有更多内容

加载失败,请刷新页面

加载更多

分布式协调服务zookeeper

ps.本文为《从Paxos到Zookeeper 分布式一致性原理与实践》笔记之一 ZooKeeper ZooKeeper曾是Apache Hadoop的一个子项目,是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它...

ls_cherish
今天
4
0
redis 学习2

网站 启动 服务端 启动redis 服务端 在redis 安装目录下 src 里面 ./redis-server & 可以指定 配置文件或者端口 客户端 在 redis 的安装目录里面的 src 里面 ./redis-cli 可以指定 指定 连接...

之渊
昨天
2
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
昨天
4
0
hash slot(虚拟桶)

在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down机的情况下能对原有集群影响最小。 round robin算法:是把数据mod后直接映射...

李朝强
昨天
4
0
Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
昨天
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部