• 大小: 75KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-19
  • 语言: C/C++
  • 标签: aes  

资源简介

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个文件信息

评论

共有 条评论