免费论文查重: 大雅 万方 维普 turnitin paperpass

浅析C语言编译方案应用

最后更新时间:2024-01-23 作者:用户投稿原创标记本站原创 点赞:32776 浏览:154771
论文导读:J,SamydeD.Electromagneticanalysis(EMA):Measuresandcountermea12下一页
【 摘 要 】 随着计算机技术飞速发展,编程技术取得巨大进步,各种各样的程序为我们学习工作生活提供了很大方便,编程工具和语言类型也空前丰富。其中,C语言由于实现速度快,逻辑性强,在编程技术中占有重要地位,成为研究开发的重要工具,很多环境下非常便捷。本文从研究角度出发,以总结的方式,介绍在采用C语言编译方案并进行分析的过程,在应用中不断学习。
【 关键词 】 C语言;方案;模拟
1 引言
在信息化时代,对信息的存储、处理和传输的安全需求越来越迫切。随着互联网的广泛应用,信息安全已经成为关乎国家、社会、经济和军事安全的重要课题。解决这一理由的有效手段之一是使用现代技术,因此对技术的研究有重大作用。
有现代数学理论的支撑,技术越来越成熟。除了理论上的分析,有时候需要进行实验模拟,通过编程运转获得运转参数或效率分析,还有对方案进行分析攻击。通过C语言编程的体会,总结编程的经验。
2 C语言编程的特点
C语言编程作为计算机类的必修课,应用广泛,各方面具有较大优势主要有几点:一是C语言灵活性比较好,代码运转效率高,软件开发运转可以接触到机器底层;二是C语言编程工具,例如MFC拥有着庞大的库,掌握了这些库函数可以为编程带来很大便利;三是与操作系统结合更紧密,编译和运转具有优势。
编程也具有其自身特点,以经典分组为例,首先算法通常是对某一字符串进行加密,偏向于对字节或比特的操作;其次,编译时字节长度、字符类型可能变化,需及时调整。当然,方案通常结构明确,各部件功能清晰,给编程带来方便。
3 采用C语言对方案进行编程
采用C语言编译方案时,可按照以程,同样以经典分组为例。分组包括SPN、Feistel和Lai-Massy三种结构,但总体上有共性,都包含共同组件:S盒、P层、主函数和迭代结构。
S盒的实现:S盒的实现比较简单,通常把S盒定义成一个一元数组,其中,i是数组中第i位置,在方案中代表S盒的输入;数组的值作为S盒的输出,output=S[input],这样就实现了S盒运算。
P层的实现:P函数的实现相对要复杂一些,因为不同方案,P函数通常不同,甚至采用的数学工具和运转结构上都大相径庭。不过归纳而言,无非是针对比特运算或者是针对字节的运算。针对比特的运算只要将每个比特看作一个元素,而针对字节的运算就不能简单的将字节看作元素,如果伴随着字节长度的变换,需要重新定义字节,在完成运算之后再将字节长度增加或减少。字节长度变换可以采用以下策略:
将32比特的字拆成8比特的字节:
a[i]=(a>>8*i)&0xff;
将8比特字节连成32比特字:
a=(a[3]<<24)|a[2]<<16|a[1]<<8|a[0]。
其他变换可按照同样策略,也包括4比特的半字节操作。还有一点要注意,大多数计算机运算的最大长度是32比特,运转更大长度时需要进行拆分,也是以数组的形式实现,拆分运算之后再连接成原长度。
主函数:主函数在实现时,直接调用已编写过的S、P函数,经典分组方案具有多轮迭代结构,所以主函数只定义其中一轮操作,目标是表达出一轮加密过程完整的逻辑结构,再由迭代操作完成轮数制约。首先对字节赋初值,将要加密的字段分成几个数组,而后运算,下面是一次攻击中主函数代码的一部分,包括子密钥加、S盒运算、P层运算。具体的S、P函数在此未列出。
for(int round=0;round<12;round++)
{
AddRoundKey(ciphertext,k[round]);
S(ciphertext);
P(ciphertext);
}
AddRoundKey(ciphertext,k[12]);
}
迭代结构:迭代结构在实现过程中,最需要注意的是迭代轮数的设定。根据具体的方案要求,大多数迭代的最后一轮只是子密钥加,而不包含S、P的操作,所以最后一轮迭代不能参与到主函数的迭代中,而要单独运转,这样主函数的迭代次数和循环轮数不一致。
4 其他
在编译方案时还有其他一些需要添加的部件,例如计时程序、随机数产生程序等。
计时程序:计时程序在效率对比方面比较重要,对的攻击通常需要对运转时间和效率进行评估,所以从程序执行开始到结束需要设置计时程序。
头文件:
#include"time.h"
计时程序开始:
clock_tstart,finish;
double duration;
start=clock();
计时程序结束:
finish=clock();
duration=(double)(finish-start)/CLOCKS_PER_SEC;
printf("\n%fsecond",duration);
system("pause");
生成4以内随机数:
srand((int)time(NULL));
rand()%4。
涉及到分析时,还有更多的细节需要注意。
参考文献
[1] Biham E, Shamir A. Differential fault analysis of secret key cryptosystems [ C ]. Proceedings of the 17th Annual Internation Cryptology Conferenec on Advances in Cryptology.
[2] Tunstall Michael, MukhopadhyayDebdeep. DifferentialFault Analysis of the AdvancedEncryption Standard Using aSingle Fault. 2009. Available at http: //eprint.iacr. org/2009 /575.
[3] Quisquater J J, Samyde D. Electromagnetic analysis(EMA): Measures and countermea论文导读:sureorartcards//ProceedingsoftheSmartCardsProgrammingandSecurity(e-Smart2001).LNCS2140.Cannes,France,2001:200-210.作者简介:范存洋(1989-),男,山东高密人,现就读与陕西工程大学,研究生在读;主要研究方向和关注领域:学。上一页12
sures for art cards//Proceedings of the Smart Cards Programming and Security(e-Smart 2001). LNCS 2140. Cannes, France, 2001: 200-210.
作者简介:
范存洋(1989-),男,山东高密人,现就读与陕西工程大学,研究生在读;主要研究方向和关注领域:学。