字符串加解密



/*************************************************************************************
*   文件名:字符串加解密
*   文件功能描述: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&*(*(


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值