91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 11.97MB
    文件類型: .zip
    金幣: 1
    下載: 0 次
    發布日期: 2023-07-12
  • 語言: C/C++
  • 標簽: AES加密??HLS??RTL??

資源簡介

使用HLS完成AES-128部分運算通路的設計,21個周期可以完成128個bit的加密。 附上可綜合的純RTL Code以及C++代碼。 可通過我的優化選項來學習如何優化HLS工具生產的代碼。

資源截圖

代碼片段和文件信息

#include?
#include?

#define?AES_128

#ifdef?AES_128
#define?Nk?4
#define?Nb?4
#define?Nr?10
#endif

#ifdef?AES_192
#define?Nk?6
#define?Nb?4
#define?Nr?12
#endif

#ifdef?AES_256
#define?Nk?8
#define?Nb?4
#define?Nr?14
#endif

#define?BYTE?unsigned?char
#define?WORD?unsigned?int

BYTE?xtime(BYTE?A);
BYTE?Multiplication(BYTE?ABYTE?B);
BYTE*?Four_Term_Multiplication(BYTE?A[4]BYTE?B[4]);
BYTE?SubBytes(BYTE?IN);
BYTE?InvSubBytes(BYTE?IN);
WORD?SubWord(WORD?IN);
WORD?RotWord(WORD?IN);
WORD?Rcon(WORD?I);
WORD*?KeyExpansion(BYTE?key[4*Nk]);
WORD*?ModifiedKeyExpansion(BYTE?key[4*Nk]);
void?ShiftRows(BYTE?S[4][Nb]);
void?InvShiftRows(BYTE?S[4][Nb]);
void?MixColumns(BYTE?S[4][Nb]);
void?InvMixColumns(BYTE?S[4][Nb]);
void?AddRoundKey(BYTE?S[4][Nb]WORD?w_bias[Nb]);
void?Cipher(BYTE?in[4*Nb]BYTE?out[4*Nb]WORD?w[Nb*(Nr+1)]);
void?InvCipher(BYTE?in[4*Nb]BYTE?out[4*Nb]WORD?w[Nb*(Nr+1)]);
void?EqInvCipher(BYTE?in[4*Nb]BYTE?out[4*Nb]WORD?dw[Nb*(Nr+1)]);
void?DispArray(char?*ArraynameBYTE?*arrayint?heightint?width);

void?main(int?argc?char*argv[])
{
BYTE?Input[4*Nb]={0x000x110x220x330x440x550x660x770x880x990xaa0xbb0xcc0xdd0xee0xff};
BYTE?key[4*Nk]={0x000x010x020x030x040x050x060x070x080x090x0a0x0b0x0c0x0d0x0e0x0f};

BYTE?CipherOut[4*Nb]InvCipherOut[4*Nb]EqInvCipherOut[4*Nb];
WORD*?w=KeyExpansion(key);
WORD*?dw=ModifiedKeyExpansion(key);

Cipher(InputCipherOutw);
InvCipher(CipherOutInvCipherOutw);
EqInvCipher(CipherOutEqInvCipherOutdw);

DispArray(“CipherIn“(BYTE?*)Input14*Nb);
DispArray(“CipherOut“(BYTE?*)CipherOut14*Nb);
DispArray(“InvCipherOut“(BYTE?*)InvCipherOut14*Nb);
DispArray(“EqInvCipherOut“(BYTE?*)EqInvCipherOut14*Nb);
}

BYTE?xtime(BYTE?A)
{
BYTE?result=(A<<1);
if(A&0x80)
result=result^0x1b;
return?result;
}

BYTE?Multiplication(BYTE?ABYTE?B)
{
BYTE?temp=B;
BYTE?sum=0;
char?i;
for(i=0;i<8;i++)
{
if(A&(0x01< sum=sum^temp;
temp=xtime(temp);
}
return?sum;
}

BYTE*?Four_Term_Multiplication(BYTE?A[4]BYTE?B[4])
{
BYTE*?result=(BYTE*)malloc(4*sizeof(BYTE));
result[0]=Multiplication(A[0]B[0])^Multiplication(A[3]B[1])^Multiplication(A[2]B[2])^Multiplication(A[1]B[3]);
result[1]=Multiplication(A[1]B[0])^Multiplication(A[0]B[1])^Multiplication(A[3]B[2])^Multiplication(A[2]B[3]);
result[2]=Multiplication(A[2]B[0])^Multiplication(A[1]B[1])^Multiplication(A[0]B[2])^Multiplication(A[3]B[3]);
result[3]=Multiplication(A[3]B[0])^Multiplication(A[2]B[1])^Multiplication(A[1]B[2])^Multiplication(A[0]B[3]);
return?result;
}

BYTE?SubBytes(BYTE?IN)
{
const?static?BYTE?S_Box[16][16]={
{0x630x7c0x770x7b0xf20x6b0x6f0xc50x300x010x670x2b0xfe0xd70xab0x76}
{0xca0x820xc90x7d0xfa0x590x470xf00xad0xd40xa20xaf0x9c0xa40x720xc0}
{0xb70xfd0x930x260x360x3f0xf70xcc0x340xa50xe50xf10x710xd80x310x15}
{0

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-06-19?12:33??AES_VLSI\
?????目錄???????????0??2017-01-20?19:39??AES_VLSI\C++\
?????目錄???????????0??2017-01-20?17:34??AES_VLSI\C++\C++\
?????文件????????4001??2017-01-17?13:14??AES_VLSI\C++\C++\C++.vcxproj
?????文件?????????942??2017-01-17?13:14??AES_VLSI\C++\C++\C++.vcxproj.filters
?????目錄???????????0??2017-01-20?19:39??AES_VLSI\C++\C++\Debug\
?????文件??????????72??2017-01-20?18:29??AES_VLSI\C++\C++\Debug\C++.lastbuildstate
?????文件????????2041??2017-01-20?18:29??AES_VLSI\C++\C++\Debug\C++.log
?????文件????????1762??2017-01-20?19:39??AES_VLSI\C++\C++\Debug\CL.read.1.tlog
?????文件?????????348??2017-01-20?19:39??AES_VLSI\C++\C++\Debug\CL.write.1.tlog
?????文件????????1222??2017-01-20?18:28??AES_VLSI\C++\C++\Debug\cl.command.1.tlog
?????文件???????????2??2017-01-20?18:29??AES_VLSI\C++\C++\Debug\link-cvtres.read.1.tlog
?????文件???????????2??2017-01-20?18:29??AES_VLSI\C++\C++\Debug\link-cvtres.write.1.tlog
?????文件???????????2??2017-01-20?18:29??AES_VLSI\C++\C++\Debug\link-rc.read.1.tlog
?????文件???????????2??2017-01-20?18:29??AES_VLSI\C++\C++\Debug\link-rc.write.1.tlog
?????文件???????????2??2017-01-20?18:29??AES_VLSI\C++\C++\Debug\link.2896-cvtres.read.1.tlog
?????文件???????????2??2017-01-20?18:29??AES_VLSI\C++\C++\Debug\link.2896-cvtres.write.1.tlog
?????文件???????????2??2017-01-20?18:29??AES_VLSI\C++\C++\Debug\link.2896-rc.read.1.tlog
?????文件???????????2??2017-01-20?18:29??AES_VLSI\C++\C++\Debug\link.2896-rc.write.1.tlog
?????文件???????????2??2017-01-20?18:29??AES_VLSI\C++\C++\Debug\link.2896.read.1.tlog
?????文件???????????2??2017-01-20?18:29??AES_VLSI\C++\C++\Debug\link.2896.write.1.tlog
?????文件???????????2??2017-01-20?18:29??AES_VLSI\C++\C++\Debug\link.5408-cvtres.read.1.tlog
?????文件???????????2??2017-01-20?18:29??AES_VLSI\C++\C++\Debug\link.5408-cvtres.write.1.tlog
?????文件???????????2??2017-01-20?18:29??AES_VLSI\C++\C++\Debug\link.5408-rc.read.1.tlog
?????文件???????????2??2017-01-20?18:29??AES_VLSI\C++\C++\Debug\link.5408-rc.write.1.tlog
?????文件???????????2??2017-01-20?18:29??AES_VLSI\C++\C++\Debug\link.5408.read.1.tlog
?????文件???????????2??2017-01-20?18:29??AES_VLSI\C++\C++\Debug\link.5408.write.1.tlog
?????文件???????????2??2017-01-20?18:29??AES_VLSI\C++\C++\Debug\link.6200-cvtres.read.1.tlog
?????文件???????????2??2017-01-20?18:29??AES_VLSI\C++\C++\Debug\link.6200-cvtres.write.1.tlog
?????文件???????????2??2017-01-20?18:29??AES_VLSI\C++\C++\Debug\link.6200-rc.read.1.tlog
?????文件???????????2??2017-01-20?18:29??AES_VLSI\C++\C++\Debug\link.6200-rc.write.1.tlog
............此處省略810個文件信息

評論

共有 條評論