C语言 KeeLoq加密解密算法

北战南征 提交于 2020-01-25 03:07:35

KeeLoq加密算法
四个字节的对称加密算法,用于部分通讯协议中,对关键信息加密处理。
目前使用较多的是上位机加密,硬件解密
C语言
#define KeeLoq_NLF 0x3A5C742E
#define bit(x,n) (((x)>>(n))&1)
#define g5(x,a,b,c,d,e) (bit(x,a)+bit(x,b)*2+bit(x,c)*4+bit(x,d)*8+bit(x,e)*16)

// 加密
u32 KeeLoq_Encrypt (u32 data, u32 key)
{
u32 x = data, r;

for (r = 0; r < 528; r++)
{
x = (x>>1)((bit(x,0)bit(x,16)(u32)bit(key,r&63)bit(KeeLoq_NLF,g5(x,1,9,20,26,31)))<<31);
}
return x;
}

// 解密
u32 Keeloq_Decrypt(u32 data,u32 key)
{
u32 x = data, r;
for (r = 0; r < 528; r++)
{
x = (x<<1) ^ (bit(x,31)) ^ (bit(x,15)) ^ (bit(key,(15-r)&63)) ^ bit(KeeLoq_NLF,g5(x,0,8,19,25,30));
}
return x;
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!