• 大小: 23KB
    文件类型: .cpp
    金币: 2
    下载: 1 次
    发布日期: 2021-06-01
  • 语言: C/C++
  • 标签: AES  快速实现  

资源简介

AES的完全实现,其中代码编写过程中具有很高的技巧性,同时利用了AES加密结构的特点,实现了AES的快速实现,本人2.5G的电脑在DEV上运行最快可达1.4G/s

资源截图

代码片段和文件信息

#include
#include
int main()
{
/*
字节代替变换由两个可逆变换符合而成,将每一个字节变换为有限域GF(2^8)中的乘法逆
再对其结果用GF(2)上的仿射变换(+【11000110】)。因为输入为256规模故可以制作一
个256规模的表,每次字节代替变换转换为一次查表,从而提高了加密速度。 
*/
unsigned __int8 S[256]={
0x630x7c0x770x7b0xf20x6b0x6f0xc50x300x010x670x2b0xfe0xd70xab0x76
0xca0x820xc90x7d0xfa0x590x470xf00xad0xd40xa20xaf0x9c0xa40x720xc0
0xb70xfd0x930x260x360x3f0xf70xcc0x340xa50xe50xf10x710xd80x310x15
0x040xc70x230xc30x180x960x050x9a0x070x120x800xe20xeb0x270xb20x75
0x090x830x2c0x1a0x1b0x6e0x5a0xa00x520x3b0xd60xb30x290xe30x2f0x84
0x530xd10x000xed0x200xfc0xb10x5b0x6a0xcb0xbe0x390x4a0x4c0x580xcf
0xd00xef0xaa0xfb0x430x4d0x330x850x450xf90x020x7f0x500x3c0x9f0xa8
0x510xa30x400x8f0x920x9d0x380xf50xbc0xb60xda0x210x100xff0xf30xd2
0xcd0x0c0x130xec0x5f0x970x440x170xc40xa70x7e0x3d0x640x5d0x190x73
0x600x810x4f0xdc0x220x2a0x900x880x460xee0xb80x140xde0x5e0x0b0xdb
0xe00x320x3a0x0a0x490x060x240x5c0xc20xd30xac0x620x910x950xe40x79
0xe70xc80x370x6d0x8d0xd50x4e0xa90x6c0x560xf40xea0x650x7a0xae0x08
0xba0x780x250x2e0x1c0xa60xb40xc60xe80xdd0x740x1f0x4b0xbd0x8b0x8a
0x700x3e0xb50x660x480x030xf60x0e0x610x350x570xb90x860xc10x1d0x9e
0xe10xf80x980x110x690xd90x8e0x940x9b0x1e0x870xe90xce0x550x280xdf
0x8c0xa10x890x0d0xbf0xe60x420x680x410x990x2d0x0f0xb00x540xbb0x16
};
/*
\02 03 01 01\ \a\ \02*a+03*b+01*c+01*d\ \02*a\ \03*b\ \01*c\ \01*d\ \02\ \03\ \01\ \01\
\01 02 03 01\ \b\ \01*a+02*b+03*c+01*d\ \01*a\ \02*b\ \03*c\ \01*d\ \01\ \02\ \03\ \01\
\01 01 02 03\* \c\=  \01*a+01*b+02*c+03*d\= \01*a\+ \01*b\+ \02*c\+ \03*d\= \01\*a+ \01\*b+ \02\*c+ \03\*d
\03 01 01 02\ \d\ \03*a+01*b+01*c+02*d\ \03*a\ \01*d\ \01*c\ \02*d\ \03\ \01\ \01\ \02\

列混合变换可以看作一个矩阵与明文块进行乘法运算,而对于每一列明文的变换可以看作abcd分别与变换矩阵的
对应的一列进行乘法运算后在相加。又因为每一个字为8bit,故可将上面每一列的乘法做成一个查询表,每个乘法
变为一次查表。因此,每一列明文的加密可以看作四次查表,从而大大提高了加密的速度。 
*/
unsigned  int S1[256]={0xc66363a50xf87c7c840xee7777990xf67b7b8d0xfff2f20d0xd66b6bbd0xde6f6fb10x91c5c5540x603030500x020101030xce6767a90x562b2b7d0xe7fefe190xb5d7d7620x4dababe60xec76769a0x8fcaca450x1f82829d0x89c9c9400xfa7d7d870xeffafa150xb25959eb0x8e4747c90xfbf0f00b0x41adadec0xb3d4d4670x5fa2a2fd0x45afafea0x239c9cbf0x53a4a4f70xe47272960x9bc0c05b0x75b7b7c20xe1fdfd1c0x3d9393ae0x4c26266a0x6c36365a0x7e3f3f410xf5f7f7020x83cccc4f0x6834345c0x51a5a5f40xd1e5e5340xf9f1f1080xe27171930xabd8d8730x623131530x2a15153f0x0804040c0x95c7c7520x462323650x9dc3c35e0x301818280x379696a10x0a05050f0x2f9a9ab50x0e0707090x241212360x1b80809b0xdfe2e23d0xcdebeb260x4e2727690x7fb2b2cd0xea75759f0x1209091b0x1d83839e0x582c2c740x341a1a2e0x361b1b2d0xdc6e6eb20xb45a5aee0x5ba0a0fb0xa45252f60x763b3b4d0xb7d6d6610x7db3b3ce

评论

共有 条评论