资源简介
ase算法实现,ase算法实现,ase算法实现,ase算法实现,很有用,供大家分享
代码片段和文件信息
#include “StdAfx.h“ //注意在此 #include “Aes.h“不可以放在前面,否则出错,
#include “Aes.h“
Aes::~Aes()
{
}
Aes::Aes()
{
}
////////////////////////////////////////////////////////////////////////////////////////////////
//构造函数
Aes::Aes(int keysizeunsigned char* keyBytes)
{
SetNbNkNr(keysize); //设置密钥块数,轮数
memcpy(keykeyByteskeysize); //字符串拷贝函数,把keyBytes的keysize个字符复制到key中
KeyExpansion(); //密钥扩展,必须提前做的初始化
}
////////////////////////////////////////////////////////////////////////////////////////////////
Aes::SetNbNkNr(int keySize)
{
Nb=4;
if(keySize=Bits128)
{
Nk=4; //4*4字节,128位密钥,10轮加密
Nr=10;
}
else if(keySize=Bits192)
{
Nk=6; //6*4字节,192位密钥,12轮加密
Nr=12;
}
else if(keySize=Bits256)
{
Nk=8; //8*4字节,256位密钥,14轮加密
Nr=14;
}
}
////////////////////////////////////////////////////////////////////////////////////////////////
Aes::KeyExpansion()
{
memset(w016*15);
for(int row=0;row {
w[4*row+0] = key[4*row];
w[4*row+1] = key[4*row+1];
w[4*row+2] = key[4*row+2];
w[4*row+3] = key[4*row+3];
}
byte* temp = new byte[4];
for(row=Nk;row<4*(Nr+1);row++)
{
temp[0]=w[4*row-4]; //当前列的前一列
temp[1]=w[4*row-3];
temp[2]=w[4*row-2];
temp[3]=w[4*row-1];
if(row%Nk==0) //逢nk时,对当前列的前一列作特殊处理
{
temp=SubWord(RotWord(temp)); //先移位,再代换,最后和轮常量异或
temp[0] = (byte)( (int)temp[0] ^ (int) AesRcon[4*(row/Nk)+0] );
temp[1] = (byte)( (int)temp[1] ^ (int) AesRcon[4*(row/Nk)+1] );
temp[2] = (byte)( (int)temp[2] ^ (int) AesRcon[4*(row/Nk)+2] );
temp[3] = (byte)( (int)temp[3] ^ (int) AesRcon[4*(row/Nk)+3] );
}
else if ( Nk > 6 && (row % Nk == 4) ) //这个还没有搞清楚
{
temp = SubWord(temp);
}
// w[row] = w[row-Nk] xor temp
w[4*row+0] = (byte) ( (int) w[4*(row-Nk)+0] ^ (int)temp[0] );
w[4*row+1] = (byte) ( (int) w[4*(row-Nk)+1] ^ (int)temp[1] );
w[4*row+2] = (byte) ( (int) w[4*(row-Nk)+2] ^ (int)temp[2] );
w[4*row+3] = (byte) ( (int) w[4*(row-Nk)+3] ^ (int)temp[3] );
} // for loop
}
////////////////////////////////////////////////////////////////////////////////////////////////
//密钥移位函数
unsigned char* Aes::RotWord(unsigned char* word)
{
byte* temp = new byte[4];
temp[0] = word[1];
temp[1] = word[2];
temp[2] = word[3];
temp[3] = word[0];
return temp;
}
////////////////////////////////////////////////////////////////////////////////////////////////
//密钥字代换函数
unsigned char* Aes::SubWord(unsigned char* word)
{
byte* temp = new byte[4];
for(int j=0;j<4;j++)
{
temp[j] = AesSbox[16*(word[j] >> 4)+(word[j] & 0x0f)]; //实际上也可以写成AesSbox[[j]];因为两者相等
}
return temp;
}
////////////////////////////////////////////////////////////////////////////////////////////////
//Aes加密函数
void Aes::Cipher(unsigned char* input unsigned char* output)
{
memset(&State[0][0]016);
for(int i=0;i<4*Nb;i
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..AD... 0 2009-12-23 15:17 AesCode
文件 9982 2008-01-04 14:47 AesCode\Aes.cpp
文件 5655 2007-05-23 22:34 AesCode\Aes.h
文件 21628 2009-12-23 15:17 AesCode\AesCode.aps
文件 1483 2009-12-23 15:17 AesCode\AesCode.clw
文件 1906 2007-05-24 11:44 AesCode\AesCode.cpp
文件 4491 2008-01-07 14:32 AesCode\AesCode.dsp
文件 539 2007-05-23 14:25 AesCode\AesCode.dsw
文件 1335 2007-05-23 14:25 AesCode\AesCode.h
文件 287744 2009-12-23 15:17 AesCode\AesCode.ncb
文件 57856 2009-12-23 15:17 AesCode\AesCode.opt
文件 1314 2008-01-07 21:10 AesCode\AesCode.plg
文件 5956 2008-01-02 10:33 AesCode\AesCode.rc
文件 9533 2008-01-07 21:10 AesCode\AesCodeDlg.cpp
文件 1506 2008-01-02 14:38 AesCode\AesCodeDlg.h
文件 3245 2008-01-06 12:37 AesCode\BMTK.CPP
文件 441 2008-01-04 15:53 AesCode\BMTK.H
..AD... 0 2008-01-04 22:03 AesCode\Debug
文件 121 2007-12-21 10:15 AesCode\Decode.cpp
文件 1585 2008-01-06 14:56 AesCode\payloadDefine.h
文件 3597 2007-05-23 14:25 AesCode\ReadMe.txt
..AD... 0 2009-12-23 15:16 AesCode\res
文件 1078 2007-05-23 14:25 AesCode\res\AesCode.ico
文件 399 2007-05-23 14:25 AesCode\res\AesCode.rc2
..A.SH. 3072 2007-05-24 23:50 AesCode\res\Thumbs.db
文件 1099 2008-01-02 10:33 AesCode\resource.h
文件 4064 2008-01-07 11:32 AesCode\Rtp.cpp
文件 427 2008-01-04 19:31 AesCode\Rtp.h
文件 209 2007-05-23 14:25 AesCode\StdAfx.cpp
文件 1127 2008-01-03 10:48 AesCode\StdAfx.h
............此处省略7个文件信息
- 上一篇:C++ 数字图像处理源代码
- 下一篇:湖南大学C语言程序设计考研试题
相关资源
- AES任意文件长度加解密C语言实现
- aes加密算法matlab
- AES128 C语言实现源码及应用例程
- CMAC(AES128)Verilog实现
- aes加密算法的verilog和c++代码
- AES加密源码使用C++实现
- AES算法源码~~~~~~~~~~~~
- zw_AES加密算法c语言实现代码.zip
- AES加密MFC程序源码
- C语言实现AES加密、解密算法
- AES加解密算法的源程序C语言版
- AES-128加密算法,C语言实现
- AES(ECB、CBC、CFB、CTR)128/192/256加密算
- C++ 使用AES算法对文本文件进行加密
- C++ AES算法ECB模式包含128192256三种密钥
- AES加密MFC实现
- aes加解密算法C语言实现
- AES128-cbc快速查表法
- C语言实现AES_ECB加密
- [C++]AES全文件加解密
- AES-CBC-128 C语言加解密
- 128192256 bitAES 高级加密标准 C代码
- AES 加密算法源代码20091025 C++版
- AES128/192/256加解密C语言源码
- AES加密解密 c++ 实现全代码
- ELMOPlatinumMaestro MDS控制器编程教程.d
- AES的C++实现(128位密钥)
- 基于C语言的AES 128 CBC加密解密代码M
- aes加密算法 c语言源码 连续加解密
- C++_AES_ECB
评论
共有 条评论