資源簡(jiǎn)介
本資源是基于VC6.0編寫的源代碼,其中AesCBC.h和AesCBC.cpp文件實(shí)現(xiàn)了AES CBC模式128位、192位和256位加解密算法,并附有相關(guān)接口使用的實(shí)例測(cè)試代碼。

代碼片段和文件信息
/******************************************************************************
??Copyright?(c)?2012-2022?jiangkun.?All?rights?reserved.
??File?Name?????:?AesCBC.cpp
??Version???????:?Initial?Draft
??Author????????:?jiangkun
??Created???????:?2012/04/10
??Last?Modified?:
??Description???:?The?Cipher?Block?chaining(CBC)?mode?encryption?and?decryption
??Function?List?:
??History???????:
??Date??????????:?2012/04/10
??Author????????:?jiangkun
??Modification??:?Created?file
******************************************************************************/
#include?
#include?
#include?
#include?“AesCBC.h“
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#if?defined(_MSC_VER)?&&?(defined(_M_IX86)?||?defined(_M_AMD64)?||?defined(_M_X64))
#?define?SWAP(x)?(_lrotl(x?8)?&?0x00ff00ff?|?_lrotr(x?8)?&?0xff00ff00)
#?define?GETU32(p)?SWAP(*((u32?*)(p)))
#?define?PUTU32(ct?st)?{?*((u32?*)(ct))?=?SWAP((st));?}
#else
#?define?GETU32(pt)?(((u32)(pt)[0]?<24)?^?((u32)(pt)[1]?<16)?^?((u32)(pt)[2]?<?8)?^?((u32)(pt)[3]))
#?define?PUTU32(ct?st)?{?(ct)[0]?=?(u8)((st)?>>?24);?(ct)[1]?=?(u8)((st)?>>?16);?(ct)[2]?=?(u8)((st)?>>??8);?(ct)[3]?=?(u8)(st);?}
#endif
#ifdef?AES_LONG
typedef?unsigned?long?u32;
#else
typedef?unsigned?int?u32;
#endif
typedef?unsigned?short?u16;
typedef?unsigned?char?u8;
#define?MAXKC???(256/32)
#define?MAXKB???(256/8)
#define?MAXNR???14
#undef?FULL_UNROLL
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*
Te0[x]?=?S?[x].[02?01?01?03];
Te1[x]?=?S?[x].[03?02?01?01];
Te2[x]?=?S?[x].[01?03?02?01];
Te3[x]?=?S?[x].[01?01?03?02];
Td0[x]?=?Si[x].[0e?09?0d?0b];
Td1[x]?=?Si[x].[0b?0e?09?0d];
Td2[x]?=?Si[x].[0d?0b?0e?09];
Td3[x]?=?Si[x].[09?0d?0b?0e];
Td4[x]?=?Si[x].[01];
*/
static?const?u32?Te0[256]?=?{
????0xc66363a5U?0xf87c7c84U?0xee777799U?0xf67b7b8dU
????0xfff2f20dU?0xd66b6bbdU?0xde6f6fb1U?0x91c5c554U
????0x60303050U?0x02010103U?0xce6767a9U?0x562b2b7dU
????0xe7fefe19U?0xb5d7d762U?0x4dababe6U?0xec76769aU
????0x8fcaca45U?0x1f82829dU?0x89c9c940U?0xfa7d7d87U
????0xeffafa15U?0xb25959ebU?0x8e4747c9U?0xfbf0f00bU
????0x41adadecU?0xb3d4d467U?0x5fa2a2fdU?0x45afafeaU
????0x239c9cbfU?0x53a4a4f7U?0xe4727296U?0x9bc0c05bU
????0x75b7b7c2U?0xe1fdfd1cU?0x3d9393aeU?0x4c26266aU
????0x6c36365aU?0x7e3f3f41U?0xf5f7f702U?0x83cccc4fU
????0x6834345cU?0x51a5a5f4U?0xd1e5e534U?0xf9f1f108U
????0xe2717193U?0xabd8d873U?0x62313153U?0x2a15153fU
????0x0804040cU?0x95c7c752U?0x46232365U?0x9dc3c35eU
????0x30181828U?0x379696a1U?0x0a05050
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2012-10-17?11:36??AesTest\
?????文件???????58474??2012-04-19?15:32??AesTest\AesCBC.cpp
?????文件????????1680??2012-04-19?15:32??AesTest\AesCBC.h
?????文件????????1744??2012-04-19?15:03??AesTest\AesTest.cpp
?????文件????????4680??2012-04-19?20:15??AesTest\AesTest.dsp
?????文件?????????537??2012-04-06?10:00??AesTest\AesTest.dsw
?????文件???????91136??2012-10-17?11:36??AesTest\AesTest.ncb
?????文件???????54784??2012-10-17?11:36??AesTest\AesTest.opt
?????文件?????????248??2012-04-19?15:35??AesTest\AesTest.plg
?????目錄???????????0??2012-10-17?11:37??AesTest\Debug\
?????文件????????1214??2012-04-06?10:00??AesTest\ReadMe.txt
?????文件?????????294??2012-04-06?10:00??AesTest\StdAfx.cpp
?????文件?????????769??2012-04-06?10:00??AesTest\StdAfx.h
評(píng)論
共有 條評(píng)論