AES加密算法用C语言实现

源代码在线查看: c#代码转换为vc经验.txt

软件大小: 41 K
上传用户: dounob
关键词: AES 加密算法 C语言
下载地址: 免注册下载 普通下载 VIP

相关代码

				/*[C#代码转换为VC经验]
				king_koo,2005/01/28
				
				[概述]
				本文以实现aes算法加解密例程为例,说一下C#代码转换为VC代码经验。
				例子代码下载Http://otiana.com/vcangle/source/aesdemo.rar
				相应C#的例子请参考Http://www.vckbase.com/document/viewdoc/?id=1068
				这个c#的类是没有头文件的。在vc中我们为了使用方便需要为他构造一个头文件,
				把相应的变量和函数声明放进来即可。
				
				[2维数组]
				C#中你可以arr[a,b]这样表示2维数组,VC可以arr[a][b],但a和b不确定时就比较
				麻烦。所以和多地方我们用arr[a*b]表示2维数组,访问时用arr[i*b+j]。如下例:
				C#:
				byte[,] temp = new byte[a,b];//声明。a、b是常量
				for(int i=0;i				  for(int j=0;j				    temp[i,j]=0;//使用
				VC:
				byte temp[a*b];//没事没必要动态分配内存
				for(int i=0;i				  for(int j=0;j				    temp[i*b+j]=0;//使用
				
				[循环]
				注意上例中的++i了吗?我没有写错,C#中的for循环用++i,VC用i++。
				
				[变量的多次声明]
				C#中变量的多次声明,如:
				for(int i=0;i				for(int i=0;i				是合法的。VC中则提示语法错误,要把后边的声明去掉:
				for(int i=0;i				for(i=0;i				
				[变量声明]
				C#中变量声明很喜欢用new的,如:
				byte[] result = new byte[4];
				因为C#有垃圾回收机制所以一般不用你去释放内存,
				可是在VC中就麻烦了,所以我一般改成:
				byte result[4];
				
				[函数返回]
				C#中可以这样返回
				byte[] SubWord(byte[] word)
				{
				  byte[] result = new byte[4];
				  ......
				  return result;
				}
				在vc中却是错误的的,因为result是局部变量,函数返回后指针就丢了。
				我们可以在参数中返回,改成这样:
				SubWord(byte* word,byte *result)
				{
				  ......
				}
				
				[>>和+的优先级]
				C#中+的优先级要比>>高,在VC中却恰好相反,+的优先级要比>>低。
				所以转换时要用括号改变运算优先级。如C#中:
				this.State[r,c] = this.Sbox[ (this.State[r,c] >> 4), (this.State[r,c] & 0x0f) ];
				VC则为:
				State[r][c] =  Sbox[ 16*(State[r][c] >> 4)+ ( State[r][c] & 0x0f) ];
				
				[]*/
				
				
							

相关资源