|
在看别人的程序时遇到下面的加密函数,不太理解,望各位指点一下!
void CheckRight(void)
{
uint KEY_ID=0,KEY_RST=1,temp;
e2prom_reads(ADR_KEY_SEED, (char *)& KEY_ID, 2);
e2prom_reads(ADR_KEY_RST, (char * )&KEY_RST, 2);
temp = CheckID(KEY_ID );
if (temp == KEY_RST)
{
gCheckRight = 1;
}
else
{
gCheckRight = 0;
}
return;
}
uint CheckID( uint MyID )
{
uint CheckCode;
uint temp,SID[3];
uchar OSL;
OSL = OSCCAL;
SID[0] = (OSL<<5)|(~OSL&0xA5);
SID[1] = (~(OSL<<7)&0xFF00)|(OSL|0x5A);
SID[2] = (OSL<<3) + OSL^0xA5;
temp = (MyID<<3);
CheckCode = SID[0]&MyID;
CheckCode = CheckCode^temp;
CheckCode = (SID[1]^CheckCode);
CheckCode = (SID[2]^CheckCode);
return CheckCode;
}
在主函数里初始化上面的函数,然后在while循环里通过判断 gCheckRight 标志位来执行其他函数
看了很久还是不太明白以上函数是如何加密的,希望各位能给我一些指导
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|