简单的加密算法
// 加密函数(32位版本)
//这里的 data 是ID,
dword encrypt(dword data, dword key, int shift) {
data ^= key; // 第一步:异或混淆
// 循环左移(shift范围1-31)
return (data << shift) | (data >> (32 - shift));
}
// 解密函数(32位版本)
dword decrypt(dword encrypted_data, dword key, int shift) {
// 循环右移恢复原始位置
encrypted_data = (encrypted_data >> shift) | (encrypted_data << (32 - shift));
return encrypted_data ^ key; // 二次异或恢复数据
}
// 多字节密钥加密(32位数据块)
void encrypt_buffer(dword* buf, int len, dword* key, int key_len) {
int i;
for(i=0; i<len; i++) {
dword k = key[i % key_len]; // 密钥循环复用
buf[i] = encrypt(buf[i], k, 7); // 示例固定移位7位
}
}
// 多字节密钥解密(32位数据块)
void decrypt_buffer(dword* buf, int len, dword* key, int key_len) {
int i;
for(i=0; i<len; i++) {
dword k = key[i % key_len];
buf[i] = decrypt(buf[i], k, 7); // 移位必须与加密一致
}
}
/* 使用示例 */
//int main() {
// // 单密钥加密示例
// dword data = 0xA5A5A5A5; // 32位测试数据
// dword key = 0x12345678; // 32位密钥
// int shift = 6; // 移位范围1-31
//
// dword encrypted = encrypt(data, key, shift);
// dword decrypted = decrypt(encrypted, key, shift);
//
// // 多密钥加密示例
// dword buffer[] = {0x00000001, 0x00000002, 0x00000003};
// dword multi_key[] = {0x12345678, 0x9ABCDEF0};
// encrypt_buffer(buffer, 3, multi_key, 2);
// decrypt_buffer(buffer, 3, multi_key, 2);
//
// return 0;
//}