字符串加解密 算法

/* 题目描述
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';
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值