搜索
bottom↓
回复: 12

AES加密的测试对比

[复制链接]

出0入0汤圆

发表于 2008-6-12 11:54:07 | 显示全部楼层 |阅读模式
点击此处下载 ourdev_307942.zip(文件大小:12K) (原文件名:aestest.zip)

说明

aes2.c 是从AVR231的IAR程序和VC程序中提取修改的aes加密解密算法子程序,aes.c 是在aes2.c 基础上优化得出的。

使用AVR Studio进行项目编辑和调试,使用默认优化级别(-s),选择晶体速度为8M。为了对比,选择了Mega8和Mega168作为仿真CPU,以及使用了WinAVR20071221和WInAVR20080512两个版本的编译器,分别进行了仿真测试。

仿真时,在每个断点处先将时钟清零,然后单步运行,这样可以得出每个子程序执行的时间。下面的aesEncrypt和aesDecrypt的运行时间都是解密或者解密一个数据块(16字节)的时间。

为了验证优化后的程序和优化前的加密是相同的,在watch中添加了变量dat,并在加密后进行观察比较。

单片机:Mega8
编译器:20080512

    aes.c                          

KEY_COUNT       1        2        3

aesEncInit   3833     4316     4010    us
aesEncrypt  11719    14293    16868    us
aesDecInit  49323    49805    49500    us
aesDecrypt   1863     2245     2628    us
Code         2370     2396     2454  byte
RAM           868      868      868  byte


    aes2.c                          

KEY_COUNT       1        2        3

aesEncInit   3961     4444     4138  
aesEncrypt  12896    15732    18568
aesDecInit  49450    49933    49628
aesDecrypt   1499     1797     2098
Code         2730     2756     2814
RAM           868      868      868


编译器:20071221

    aes.c                          

KEY_COUNT       1        2        3

aesEncInit   3711     4188     3914  
aesEncrypt  13859    16910    19961
aesDecInit  49169    49646    49372
aesDecrypt   2114     2558     2999
Code         1910     1928     1950
RAM           868      868      868


    aes2.c                          

KEY_COUNT       1        2        3

aesEncInit   3843     4312     4038  
aesEncrypt  14221    17353    20486
aesDecInit  49303    49771    49497
aesDecrypt   1734     2093     2450
Code         2244     2258     2274
RAM           868      868      868

--------------------------------------

单片机:Mega168
编译器:20080512

    aes.c                          

KEY_COUNT       1        2        3

aesEncInit   3834     4322     4011    us
aesEncrypt  11743    14323    16902    us
aesDecInit  49323    49812    49500    us
aesDecrypt   1870     2252     2637    us
Code         2486     2514     2570  byte
RAM           868      868      868  byte


    aes2.c                          

KEY_COUNT       1        2        3

aesEncInit   3961     4450     4139  
aesEncrypt  12896    15763    18604
aesDecInit  49451    49940    49628
aesDecrypt   1499     1806     2108
Code         2814     2890     2946
RAM           868      868      868


编译器:20071221

    aes.c                          

KEY_COUNT       1        2        3

aesEncInit   3720     4203     3924  
aesEncrypt  13963    17037    20111
aesDecInit  49178    49661    49383
aesDecrypt   2135     2583     3030
Code         2078     2098     2120
RAM           868      868      868


    aes2.c                          

KEY_COUNT       1        2        3

aesEncInit   3843     4327     4048  
aesEncrypt  14222    17476    20629
aesDecInit  49303    49787    49508
aesDecrypt   1734     2103     2462
Code         2328     2440     2456
RAM           868      868      868



WinAVR20071221编译出的代码竟然比WinAVR20080512还要小一些,但是运行速度慢一些。当然,优化效果与不同的C编译器、编译器版本、参数设置、表达式写法等都有一定的关系。

从上面还可以看出,优化代码大小后,解密速度有所下降。在使用128位密钥,解密一个块(16字节时),速度降低了约0.3-0.4ms。如果解密16K的程序空间,将多消耗 0.4 * 16 * 1024 / 16 = 0.4s,还是可以接受的。当然现在只是一个粗略的测试,最终的效果可能会有所提高。

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2008-6-13 11:24:41 | 显示全部楼层
做个记号

出0入0汤圆

发表于 2008-8-6 11:24:17 | 显示全部楼层
我有一个bin文件,为了防止破解,在烧写进avr芯片之前,对bin文件要加密,解密是在在烧写到芯片的里面去进行的。
我认为解密在bootloaer里面进行的!
这个方法可行吗?

出0入0汤圆

 楼主| 发表于 2008-8-7 20:41:22 | 显示全部楼层
Bootloader加密的原理基本就是AVR230和AVR231中介绍的那样,在此基础上,可以灵活变化。不过最终还是要变为明文再执行的。

如果是先写入加密的文件,然后在一定条件下进行激活,在bootloader中解密,应当是可行的。

出0入0汤圆

发表于 2010-4-12 14:17:38 | 显示全部楼层
回复【楼主位】shaoziyang
-----------------------------------------------------------------------

请问shaoziyang ,你的AES中的BLOCKSIZE取值能改的吗,可否取16,8,。。。?

出0入0汤圆

发表于 2010-12-22 01:02:35 | 显示全部楼层
mark

出0入17汤圆

发表于 2010-12-22 09:52:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-11 18:46:59 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-9-5 10:30:52 | 显示全部楼层
mark


出0入0汤圆

发表于 2012-11-28 11:01:48 | 显示全部楼层
收藏了,感谢一下

出0入0汤圆

发表于 2012-11-28 11:41:09 来自手机 | 显示全部楼层
mark,收藏备用

出0入0汤圆

发表于 2012-11-28 19:44:00 | 显示全部楼层
最近看了RC4,真的很简单,而且速度也快,加密解密调用同一个函数。

出0入0汤圆

发表于 2012-12-4 09:58:54 | 显示全部楼层
very good !!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 05:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表