You are on page 1of 2

#include<LPC214x.

H>
void KEYInitial (void);
void KEYSetup (void);
void KEYStreamGen (void);
void Encryption (void);
void Transmit (void);
unsigned char KEYRAM [256];
unsigned char SRAM [256];
unsigned char KSRAM [256];
unsigned char KEY[16]={0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x02,0x01,0x
02,0x01,0x02,0x01,0x02};
unsigned char PlainText[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M'
,'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
unsigned char TxData[26];
int main (void)
{
PINSEL0 = 0x00000000;
IO0DIR = 0x00FFFFFF;
while (1)
{
KEYInitial();
KEYSetup();
KEYStreamGen();
Encryption();
Transmit();
}
}
void KEYInitial (void)
{
unsigned char i;
for(i=0;i<255;i++)
{
KEYRAM[i]= KEY[i%16];
SRAM [i]= i;
}
}
void KEYSetup (void)
{
unsigned char j, i, k;
j = 0;
for(i=0; i<255; i++)
{
j = ((j+SRAM[i]+KEYRAM[i])%256);
k = SRAM[i];
SRAM[i]=SRAM[j];
SRAM[j]=k;
}
}
void KEYStreamGen (void)
{
unsigned char j, i, k, l;
j = 0;
l=0;
for(i=0; i<255; i++)
{
l=(l+1)%256;
j = ((j+SRAM[l])%256);
k = SRAM[l];
SRAM[l]=SRAM[j];
SRAM[j]=k;
KSRAM[i]=SRAM[(SRAM[l]+SRAM[j])%256];
}
}
void Encryption (void)
{
unsigned char i=0;
while(i<=25)
{
i=i%256;
TxData[i] = PlainText[i]^KSRAM[i];
i=i+1;
}
//return TxData;
}
void Transmit (void)
{
unsigned char i,p,ks,t;
for (i=0; i<=25; i++)
{
p = 0;
ks = 0;
t = 0;
p = PlainText[i];
ks = KSRAM[i];
t = TxData[i];
//ks = ks<<8;
//t = t<<16;
i = i+1;
IO0CLR = 0xFFFFFFFF;
IO0SET = p;
IO0CLR = p;
IO0SET = t;
IO0CLR = t;
IO0SET = ks;
IO0CLR = ks;
}
}

You might also like