发明名称 一种基于OpenCL的AES并行化实现方法
摘要 本发明公开了一种基于OpenCL的AES并行化实现方法,根据这个方案,能使AES在基于OpenCL的AMD GPU上并行运行时获得最佳性能。该方法包括如下步骤:S1、确定明/密文及轮密钥分组的数量,准备好明/密文及轮密钥的数据;S2、确定AES的执行模式,为编写内核函数做准备;S3、编写内核函数;S4、编写OpenCL程序主文件,为OpenCL程序的执行做准备;S5、设置程序运行参数,分配内存空间,运行程序;S6、获取加解密结果,释放资源。本发明主要通过对AES并行运行时,数据在内存中的合理分配以及并行粒度的合理选择来提升运行性能,可用于快速加解密或口令破解机。
申请公布号 CN103973431B 申请公布日期 2017.04.05
申请号 CN201410153285.2 申请日期 2014.04.16
申请人 华南师范大学 发明人 龚征;袁宇恒;何振忠;温雅敏
分类号 H04L9/06(2006.01)I;G06F9/38(2006.01)I 主分类号 H04L9/06(2006.01)I
代理机构 广州市华学知识产权代理有限公司 44245 代理人 黄磊
主权项 一种基于OpenCL的AES并行化实现方法,其特征在于,包括下述步骤:S1、确定明/密文及轮密钥分组的数量,准备好明/密文及轮密钥数据的数据;S2、确定AES的执行模式,为编写内核函数做准备,根据AES的设计,将每一轮的不同操作转化为仅用T表和异或来实现,其具体实现方式是:假设a为一轮的输入,长度为128比特,此处看成是4×4字节的矩阵,按照32比特划分为4份,即a0,a1,a2,a3,1份相当于原有矩阵中的1行,如a<sub>0,j</sub>代表原有矩阵中的第一行第j列的元素,d为一轮的输出,那么,d可以表示为:<img file="FDA0001141293160000011.GIF" wi="1310" he="83" />其中T0,T1,T2,T3为4个T表,k<sub>j</sub>为第j列要与之异或的子轮密钥;经过上述T表异或处理后,原本需要经过字节替换、行移位、列混合以及轮密钥加四个操作才能获取的一轮的输出,现在就转化为仅依靠查表和异或就能获取到;在完成上述T表异或操作前需要预先准备好T表并将其写在内核文件中;T表的类型可设为4字节的静态无符号整型私有值、4字节的无符号整型常量或静态无符号整型常量类型,需要注意,T表应写在内核函数之外,因为内核函数之内不允许使用静态类型,而且将T表写在内核函数中会导致程序运行时性能的下降;S3、编写内核函数;S4、编写OpenCL程序主文件,为OpenCL程序的执行做准备;S5、设置程序运行参数,分配内存空间,运行程序;S6、获取加解密结果,释放资源。
地址 510631 广东省广州市天河区石牌中山大道西55号