在C語言中,位運算是非常強大的工具,可以用來進行數據加密
#include <stdio.h>
void xor_encrypt_decrypt(unsigned char *data, int length, unsigned char key) {
for (int i = 0; i < length; i++) {
data[i] ^= key;
}
}
int main() {
unsigned char plaintext[] = "Hello, World!";
int length = sizeof(plaintext) - 1; // 不包括空字符
unsigned char key = 0x5A; // 示例密鑰
printf("Plaintext: %s\n", plaintext);
xor_encrypt_decrypt(plaintext, length, key);
printf("Encrypted: %s\n", plaintext);
xor_encrypt_decrypt(plaintext, length, key);
printf("Decrypted: %s\n", plaintext);
return 0;
}
這個示例中,我們定義了一個名為xor_encrypt_decrypt
的函數,它接受一個數據指針、數據長度和密鑰作為參數。函數通過對數據進行異或操作(使用XOR運算符)來加密或解密數據。在main
函數中,我們使用一個簡單的字符串作為明文,并將其加密和解密。
#include <stdio.h>
unsigned char xor_encrypt(unsigned char data, unsigned char key) {
return data ^ key;
}
unsigned char xor_decrypt(unsigned char data, unsigned char key) {
return data ^ key;
}
int main() {
unsigned char plaintext[] = "Hello, World!";
int length = sizeof(plaintext) - 1; // 不包括空字符
unsigned char key = 0x5A; // 示例密鑰
printf("Plaintext: %s\n", plaintext);
for (int i = 0; i < length; i++) {
plaintext[i] = xor_encrypt(plaintext[i], key);
}
printf("Encrypted: %s\n", plaintext);
for (int i = 0; i < length; i++) {
plaintext[i] = xor_decrypt(plaintext[i], key);
}
printf("Decrypted: %s\n", plaintext);
return 0;
}
在這個示例中,我們定義了兩個單獨的函數xor_encrypt
和xor_decrypt
,分別用于加密和解密單個數據。在main
函數中,我們遍歷明文中的每個字符,并使用這些函數進行加密和解密。
請注意,這些示例僅用于演示目的,實際應用中可能需要更復雜和安全的加密算法。例如,您可以使用AES、DES等加密算法,或者使用現成的加密庫,如OpenSSL。