/* 题目描述
1、对输入的字符串进行加解密,并输出。
2加密方法为:
当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;
当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;
其他字符不做变化。
3、解密方法为加密的逆过程。
*/
#include <stdio.h>
#include <string.h>
void Encrypt (char aucPassword[], char aucResult[]);
void unEncrypt (char result[], char password[]);
int main()
{
char input_str_need[100] = "";
char input_str_no[100] = "";
char out_need[100] = "";
char out_no[100]= "";
int n;
fgets(input_str_need, 100,stdin);
fgets(input_str_no, 100,stdin);
input_str_need[strlen(input_str_need)-1]='\0';
input_str_no[strlen(input_str_no)-1]='\0';
Encrypt (input_str_need, out_need);
n = unEncrypt (input_str_no, out_no);
printf("%s\n",out_need);
printf("%s\n",out_no);
//puts(out_need);
//puts(out_no);
return 0;
}
//在该函数中实现字符串加密并输出
// 1、字符串以\0结尾。
// 2、字符串最长100个字符。
void Encrypt (char aucPassword[], char aucResult[])
{
char *pwd = aucPassword;
char *res = aucResult;
while(*pwd != '\0')
{
if(*pwd >= '0' && *pwd <= '8')
{
if(*pwd == '9')
{
*res = '0';
}else
{
*res = *pwd + 1;
}
}
else if(*pwd >= 'a' && *pwd <= 'z')
{
if(*pwd >= 'a' && *pwd <= 'y')
{
*res = *pwd - ('a' - 'A') + 1;
}else
{
*res = 'A';
}
}
else if(*pwd >= 'A' && *pwd <= 'Z')
{
if(*pwd >= 'A' && *pwd <= 'Y')
{
*res = *pwd - ('a' - 'A') + 1;
}else
{
*res = 'a';
}
}
else
{
*res = *pwd;
}
pwd++;
res++;
}
//*res = '\0';
}
//在该函数中实现字符串解密并输出
int unEncrypt (char result[], char password[])
{
char *pwd = password;
char *res = result;
while(*res != '\0')
{
if(*res >= '0' && *res <= '9')
{
if(*res == 0)
{
*pwd = '9';
}
else
{
*pwd = *res - 1;
}
}
else if(*res >= 'a' && *res <= 'z')
{
if(*res >= 'b' && *res <= 'z')
{
*pwd = *res - ('a' - 'A') - 1;
}else
{
*pwd = 'Z';
}
}
else if(*res >= 'A' && *res <= 'Z')
{
if(*res >= 'B' && *res <= 'Z')
{
*pwd = *res + ('a' - 'A') - 1;
}else
{
*pwd = 'z';
}
}
else
{
*pwd = *res;
}
pwd++;
res++;
}
return 0;
//*pwd = '\0';
}
字符串加解密 算法
最新推荐文章于 2024-08-15 15:06:51 发布