/*************************************************************************************
* 文件名:字符串加解密
* 文件功能描述:1对输入的字符串进行加解密,并输出。
2加密方法为:
当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;
当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;
其他字符不做变化。
3解密方法为加密的逆过程。
* 文件作者名:邓勇志
* 修改记录:2016-12-11
**************************************************************************************/
#include<stdio.h>
#include<string.h>
/**************************************************************************************
* 函数名:Encrypt
* 函数功能说明:在该函数中实现字符串加密并输出,字符串以\0结尾,字符串最长100个字符。
* 输入参数说明:aucPassword[]中输入一串要加密的密码
* 输出参数说明:aucResult[]中输出加密后的字符串
* 返回值说明:
* 修改记录:2016-12-11
* GWDelight Copyright.2015-2016
**************************************************************************************/
void Encrypt (char aucPassword[])
{
int i;
for(i=0; i<strlen(aucPassword); i++)
{
if(('a' <=aucPassword[i]) && (aucPassword[i]<= 'z'))
aucPassword[i] = (aucPassword[i] - 32 + 1 - 'A' + 26) % 26 + 'A';
else if(('A' <=aucPassword[i]) && (aucPassword[i]<= 'Z'))
aucPassword[i] = (aucPassword[i] + 32 + 1 - 'a' + 26) % 26 + 'a';
else if(('0' <=aucPassword[i]) && (aucPassword[i]<= '9') )
aucPassword[i] = (aucPassword[i] + 1 - '0'+ 10) % 10 +'0';
}
printf("加密后字符串为:");
for(i=0; i<strlen(aucPassword); i++)
{
printf("%c", aucPassword[i]);
}
printf("\n");
}
/**************************************************
* 函数名:unEncrypt
* 函数功能说明:在该函数中实现字符串解密并输出,字符串以\0结尾,字符串最长100个字符
* 输入参数说明:result[]中输入一串加过密的密码
* 输出参数说明:password[]中输出解密后的字符
* 返回值说明:
* 修改记录:2016-12-11
* GWDelight Copyright.2015-2016
**************************************************/
int unEncrypt (char result[])
{
int i;
for(i=0; i<strlen(result); i++)
{
if(('a' <= result[i]) && (result[i] <= 'z'))
result[i] = (result[i] - 32 - 1 - 'A' + 26) % 26+'A';
else if(('A' <=result[i]) && (result[i]<= 'Z'))
result[i] = (result[i] + 32 - 1 - 'a' + 26) % 26 + 'a';
else if(('0' <=result[i]) && (result[i] <= '9') )
result[i] = (result[i] - 1 -'0'+ 10)%10+'0'; /*(result[i] - 1 - '0' + 10) % 10 + '0' ;*/
}
printf("解密后字符串为:");
for(i=0; i<strlen(result); i++)
{
printf("%c", result[i]);
}
printf("\n");
return 0;
}
int main()
{
char str1[100],str2[100];
printf("请输入加密前的字符串:");
gets(str1);
printf("请输入加密后的字符串:");
gets(str2);
Encrypt (str1);
unEncrypt (str2);
return 0;
}
注意:有专门检测是否为大小写字母,是否为数字的函数,更为简单哦
测试结果:
请输入加密前的字符串:abcDE123%^&*&
请输入加密后的字符串:BCDef234&*(*(
加密后字符串为:BCDef234%^&*&
解密后字符串为:abcDE123&*(*(