一个关于AES加密的问题

naixian1983 2008-08-03 10:32:55
本人对AES不了解,这里有几个代码,却不懂其意


AES.h



Aes(int keySize, unsigned char* keyBytes);

void Cipher(unsigned char* input, unsigned char* output); // encipher 16-bit input

void Aes::Cipher(unsigned char* input, unsigned char* output)
{
memset(&State[0][0],0,16);
for(int i=0;i<4*Nb;i++)
{
State[i%4][i/4]=input[i];
}
AddRoundKey(0);

for (int round = 1; round <= (Nr - 1); round++)
{
SubBytes();
ShiftRows();
MixColumns();
AddRoundKey(round);
} // main round loop

SubBytes();
ShiftRows();
AddRoundKey(Nr);

// output = state
for (i = 0; i < (4 * Nb); i++)
{
output[i] = State[i % 4][ i / 4];
}

}




对文件进行加密

FILE* finput;
FILE* foutput;
finput=fopen((LPCTSTR)EnDe_filename,"rb");
if(!finput)
{
AfxMessageBox("Open file failed");


return;
}
fseek(finput,0,SEEK_END);
long lFileLen=ftell(finput);
fseek(finput,0,SEEK_SET);
long blocknum=lFileLen/16;
long leftnum=lFileLen%16;

str_EnFileName=EnDe_filename+".en";
foutput=fopen((LPCTSTR)str_EnFileName,"wb");
if(!foutput)
{
AfxMessageBox("Open file failed");

fclose(finput);
return;
} unsigned char inBuff[25],ouBuff[25];
Aes aes(16,(unsigned char*)"\x0\x1\x2\x3\x4\x5\x6\x7\x8\x9\xa\xb\xc\xd\xe\xf");
for(long i=0;i<blocknum;i++)
{
fread(inBuff,1,16,finput);
aes.Cipher(inBuff,ouBuff);
fwrite(ouBuff,1,16,foutput);

}
if(leftnum)
{
memset(inBuff,0,16);
fread(inBuff,1,leftnum,finput);
aes.Cipher(inBuff,ouBuff);
fwrite(ouBuff,1,16,foutput);
}
fclose(finput);
fclose(foutput);





1。上面代码,密锁到底是那个?inBuff?,ouBuff?还是(unsigned char*)"\x0\x1\x2\x3\x4\x5\x6\x7\x8\x9\xa\xb\xc\xd\xe\xf"

2 fread(inBuff,1,16,finput);
aes.Cipher(inBuff,ouBuff);
fwrite(ouBuff,1,16,foutput);
这3行代码为什么可以对其文件进行加密,密锁在那里?其简单原理可以给我分析一下吗?

明天这贴加到200分,希望对AES有所认识的大哥帮忙一下




...全文
131 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hado88 2011-05-20
  • 打赏
  • 举报
回复
??
;;;;;;;;;;;;;;
sunyim 2008-08-04
  • 打赏
  • 举报
回复
建议先找两篇文章看一下
然后再看代码
cofanz 2008-08-03
  • 打赏
  • 举报
回复
1."\x0\x1\x2\x3\x4\x5\x6\x7\x8\x9\xa\xb\xc\xd\xe\xf"是密钥
2.真正的加密过程在Cipher函数中,所以在外面看不见密钥。
naixian1983 2008-08-03
  • 打赏
  • 举报
回复
我想知道我上面的代码哪个是key,怎样才能把这个key显示出来?
长尾巴的悟空 2008-08-03
  • 打赏
  • 举报
回复
算法问题.
yjgx007 2008-08-03
  • 打赏
  • 举报
回复
http://www.codeproject.com/KB/security/AESProductKey.aspx

see the section - Advanced Encryption Standard

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧