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;
}
来源:CSDN
作者:丁海龙 专注研发1314
链接:https://blog.csdn.net/kaximode/article/details/103833690