上一篇
c语言怎么进行加密解密
- 行业动态
- 2024-03-31
- 3787
C语言进行加密解密的方法有很多,这里我将介绍两种常见的加密解密方法:凯撒密码和异或加密。
1、凯撒密码
凯撒密码是一种简单的替换加密方法,它将明文中的每个字符按照一个固定的偏移量进行替换,当偏移量为3时,明文"ABC"将被替换为"DEF"。
下面是一个简单的C语言实现凯撒密码加密解密的示例:
#include <stdio.h> #include <string.h> void caesar_encrypt(char *plaintext, int shift) { int len = strlen(plaintext); for (int i = 0; i < len; i++) { char c = plaintext[i]; if (c >= 'A' && c <= 'Z') { plaintext[i] = (c 'A' + shift) % 26 + 'A'; } else if (c >= 'a' && c <= 'z') { plaintext[i] = (c 'a' + shift) % 26 + 'a'; } } } void caesar_decrypt(char *ciphertext, int shift) { int len = strlen(ciphertext); for (int i = 0; i < len; i++) { char c = ciphertext[i]; if (c >= 'A' && c <= 'Z') { ciphertext[i] = (c 'A' shift + 26) % 26 + 'A'; } else if (c >= 'a' && c <= 'z') { ciphertext[i] = (c 'a' shift + 26) % 26 + 'a'; } } } int main() { char plaintext[] = "Hello, World!"; printf("Plaintext: %s ", plaintext); caesar_encrypt(plaintext, 3); printf("Ciphertext: %s ", plaintext); caesar_decrypt(plaintext, 3); printf("Decrypted text: %s ", plaintext); return 0; }
2、异或加密
异或加密是一种基于异或运算的简单加密方法,它将明文中的每个字符与一个密钥进行异或运算,得到密文,由于异或运算具有可逆性,因此可以通过再次进行异或运算来恢复原始明文。
下面是一个简单的C语言实现异或加密解密的示例:
#include <stdio.h> #include <string.h> void xor_encrypt(char *plaintext, char *key, char *ciphertext) { int len = strlen(plaintext); for (int i = 0; i < len; i++) { ciphertext[i] = plaintext[i] ^ key[i % strlen(key)]; } } void xor_decrypt(char *ciphertext, char *key, char *decrypted) { int len = strlen(ciphertext); for (int i = 0; i < len; i++) { decrypted[i] = ciphertext[i] ^ key[i % strlen(key)]; } } int main() { char plaintext[] = "Hello, World!"; char key[] = "SecretKey"; char ciphertext[strlen(plaintext) + 1]; char decrypted[strlen(plaintext) + 1]; memset(ciphertext, 0, sizeof(ciphertext)); memset(decrypted, 0, sizeof(decrypted)); xor_encrypt(plaintext, key, ciphertext); printf("Ciphertext: %s ", ciphertext); xor_decrypt(ciphertext, key, decrypted); printf("Decrypted text: %s ", decrypted); return 0; }
以上两种方法都是非常简单的加密解密方法,仅适用于教学演示和简单的应用场景,在实际应用中,建议使用更安全的加密算法,如AES、RSA等。
本站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本站,有问题联系侵删!
本文链接:http://www.xixizhuji.com/fuzhu/305503.html