一个简单的异或加密算法

本文介绍了基于异或运算的简单加密算法。利用(B ^ A) ^ A = B的性质,通过设置密钥A对数据B进行加解密。文章详细展示了如何使用32位密钥和8位使能标志的结构体进行加解密操作,并提供了初始化、控制、关闭等功能。解密过程考虑了数据对齐和非对齐情况,确保整个加密解密流程的完整性和灵活性。
摘要由CSDN通过智能技术生成

异或运算:(B ^ A) ^ A = B ^ 0 = B
根据这个规律可设计出简单加密算法。
B为原始数据,A为密钥。
B与A进行异或得到密文。
将密文与A进行异或可以得到明文B。

对于不同的数据,有的数据可能需要加密,有的无须加密。不同数据之前可能采用的密钥不同。

定义结构体:
typedef struct _CIPHER {
u32 cipher_code; ///>解密key
u8 cipher_enable; ///>解密读使能
} CIPHER;
使用32位表示密钥,8位表示是否使能加解密。

这里可以根据不同数据来初始化密钥以及是否使能加密操作:
void cipher_init(CIPHER *pcipher, u32 key)
{
pcipher->cipher_code = key;//key初始化
cipher_ctl(pcipher, 0);//不使能解密
}
初始化后,默认是不进行加解密的。

通过控制函数来进行加解密的配置:
1表示使能加密
0表示禁止加密
static void cipher_ctl(CIPHER *pcipher, u8 ctl)
{
pcipher->cipher_enable = ctl;
}

该函数提供关闭加密功能:
void cipher_close(CIPHER *pcipher)
{
cipher_ctl(pcipher, 0);//不使能解密
}

这里采用按照4字节对齐的方式进行加解密。
addr % 4 = 0,使用ciphe

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值