运行结果:
源代码:
1 #include <stdlib.h> 2 #include <stdio.h> 3 #include <string.h> 4 using namespace std; 5 6 //亦或加密解密都是同一个函数 7 // 待加密 密码 长度 8 void jiami(char *src, char *mi, int len) 9 { 10 //获取总长度 11 int srcLen = len; 12 //获取密码长度 13 int miLen = strlen(mi); 14 //求出待加密的数据被密码长度整除的倍数 15 int zheng = srcLen / miLen; 16 //求出待加密的数据被密码长度整除的余数 17 int yu = srcLen % miLen; 18 19 //加密 20 for (int i = 0; i < zheng; i++) 21 { 22 for (int j = 0; j < miLen; j++) 23 { 24 src[i*miLen + j] ^= mi[j]; 25 } 26 } 27 28 //余数部分加密,如果没有余数则不执行 29 for (int i = 0; i < yu; i++) 30 { 31 src[miLen*zheng + i] ^= mi[i]; 32 } 33 } 34 35 void main() 36 { 37 char src[100] = "日暮苍山远,天寒白屋贫。柴门闻犬吠,风雪夜归人。"; 38 int len = strlen(src); 39 printf("待加密的数据:%s\n", src); 40 char mi[4] = "123"; 41 jiami(src,mi,len); 42 printf("加密后的数据:%s\n", src); 43 jiami(src, mi, len); 44 printf("解密后的数据:%s\n", src); 45 system("pause"); 46 }