EqInvCipher( byte in[4*Nb], byte out[4*Nb], word dw[Nb*(Nr+1)] )
begin
byte state[4,Nb] ;
state = in ;
AddRoundKey(state, dw[Nr*Nb, (Nr+1)*Nb-1]) ;
for round = Nr-1 step 1 downto 1
InvShiftRows(state) ; // 逆移行
InvSubBytes(state) ; // 逆字节替代
AddRoundKey(state, dw[round*Nb, (round+1)*Nb-1]) ;
InvMixColumns(state) ; // 逆混列
end for
InvSubBytes(state) ; // 最后一轮不含逆混列
InvShiftRows(state) ;
AddRoundKey(state, dw[0, Nb-1]) ;
out = state ; // 输出明文分组
end
3.4 AES算法优点
1、设计简单。无论使用硬件或软件方式实现,无论是否使用反馈模式,AES算法都能显示出非常良好的性能。
2、AES算法的密钥安装时间非常短,具有良好的灵敏度。
3、AES算法的内存需求非常低,非常适合在受限制的环境中使用。这点在并行计算中非常重要,因为在并行计算中往往需要同时处理大量文件,内存易出现分配不足的情况而出错。
4、AES算法的操作简单,在大部分平台上都有良好的运行状况,支持并行处理,并可以抵抗时间和空间上的攻击。
5、AES算法在分组和密钥大小上都具有很大的灵活性[11]。
4 AES算法在GPU上的并行实现
4.1 编程环境
4.1.1 硬件环境
处理器:Intel(R)Core (TM)i5-2500K @3.30GHz
内存(RAM):16.0 GB
显卡:NVIDIA Geforce GTS 450
GPU:Tesla C2050
显存:3GB GDDR5
CUDA核心: 448
图 4.1 显卡信息4.1.2 软件环境
系统类型:Windows 7 Ultimate 64位操作系统 (SP 1)
CUDA版本:4.0
编程工具:Visual Studio 2010
图 4.2 设备查询结果4.2 数据格式
4.2.1. Files for ozone and meteorological data (only land area)
. File name: 00001-16555.txt
. Data format:
表 4.1 数据格式
Julian Day Hour Temp RH SWDOWN WS O3_2000 O3_2020
数据文件格式,例如00001.txt 第一列:
1 0 0.29833E+03 0.84708E+02 0.00000E+00 0.00000E+00 0.18685E+02 0.18685E+02
每个文件共记录366天的数据,每天24小时,共16555个文件。
4.2.2. File for phenology and others information.
. File name : header.txt
表 4.2 头文件格式
File num Long (deg) Lat (deg) Flowering day Fraction of cultivated
area index
(注:本实验所有数据均来自中科院土壤所。)4.3设计思路
按照CUDA的编程模型,实现AES并行加密和解密将有更大的灵活性,例如,线程块的文数、线程间数据、存储空间类型的选择的共享等。但基于CUDA的编程方法与传统的CPU编程方法相比较,仍然是一项比较复杂的工作。