www.pudn.com > AES.rar > AES.cpp


// AES.cpp  
 
#include "stdafx.h" 
 
 
//void AddRoundKey(word8 a[4][BC], word8 k[4][BC]) 
//{ 
//    for (int j = 0; j < BC; j++) 
//	{ 
//		for (int i = 0; i < 4; i++) 
//		{ 
//			a[i][j] ^= k[i][j]; 
//		} 
//	} 
//} 
// 
//void SubBytes (word8 a[4][BC]) 
//{ 
//    for (int j = 0; j < BC; j++) 
//	{ 
//		for (int i = 0; i < 4; i++) 
//		{ 
//			a[i][j] = S_Table[a[i][j]]; 
//		} 
//	} 
//} 
//void CircleLeftMove (word8 x[BC], word8 n) 
//{ 
//	word8 temp[BC]; 
//	for (int j = 0; j < BC; j++) 
//	{ 
//	   temp[j] = x[j]; 
//	} 
//	for (int j = 0; j < BC; j++) 
//	{ 
//	   x[j] = temp[(j + n) % BC]; 
//	} 
//} 
//void ShiftRows (word8 a[4][BC]) 
//{ 
//	CircleLeftMove(a[1], C1); 
//	CircleLeftMove(a[2], C2); 
//	CircleLeftMove(a[3], C3); 
//} 
//word8 MulBytes(word8 a, word8 b)  
//{ 
//	if (a && b) 
//		return Alogtable[(Logtable[a] + Logtable[b])%255]; 
//	else 
//		return 0; 
//} 
//void MixColumns (word8 a[4][BC]) 
//{ 
//	word8 temp[4][BC]; 
//	for (int j = 0; j < BC; j++) 
//	{ 
//		for (int i = 0; i < 4; i++) 
//		{ 
//			temp[i][j] =  MulBytes(0x02, a[(i + 0) % 4][j]) ^  MulBytes(0x03, a[(i + 1) % 4][j]) ^  
//			MulBytes(0x01, a[(i + 2) % 4][j])^ MulBytes(0x01, a[(i + 3) % 4][j]); 
//		} 
//	} 
//} 
// 
//void Round(word8 a[4][BC], word8 k[4][BC]) 
//{ 
//	SubBytes(a); 
//	ShiftRows(a); 
//	MixColumns(a); 
//	AddRoundKey(a, k); 
//} 
// 
//void FinalRound(word8 a[4][BC], word8 k[4][BC]) 
//{ 
//	SubBytes(a); 
//	ShiftRows(a); 
//	//MixColumns(a); 
//	AddRoundKey(a, k); 
//} 
// 
//void Encrypt (word8 a[4][BC], word8 rk[ROUNDS+1][4][BC]) 
//{ 
//	AddRoundKey(a, rk[0]); 
//    for (int i = 1; i < ROUNDS; i++) 
//		Round(a, rk[i]); 
//	FinalRound(a, rk[ROUNDS]); 
//}