来源:百度代码生成
#include <stdint.h>
#include <string.h>
void xor_encrypt(uint8_t *data, size_t length, uint8_t key) {
for (size_t i = 0; i < length; ++i) {
data[i] ^= key;
}
}
void xor_decrypt(uint8_t *data, size_t length, uint8_t key) {
xor_encrypt(data, length, key);
}
int main() {
uint8_t data[] = "Hello, World!";
size_t length = strlen((const char *)data);
uint8_t key = 0xFF; // 密钥
// 加密
xor_encrypt(data, length, key);
// 解密
xor_decrypt(data, length, key);
return 0;
}
改进一下,可以把 key
设置为一个数组,每次使用 key 里面的不同 key 做 XOR
void xor_encrypt(uint8_t *data, size_t length, uint8_t key[], int keylen) {
for (size_t i = 0; i < length; ++i) {
data[i] ^= key[i % keylen];
}
}
void xor_decrypt(uint8_t *data, size_t length, uint8_t key[], int keylen) {
xor_encrypt(data, length, key, keylen);
}