用c++做文本加密与解密程序(源码)

#include <iostream>
#include <cstring>
void closekey(char message[]);   //加密函数
void openkey(char message[]);    //解密函数

int main()
{
    	unsigned int choose;     
    	char message[100];
    	
    	std::cout<<"请输入你想进行的操作:1.加密  2.解密\n";
	    while(std::cin>>choose)
    	{
        		if(choose==1)
    		    {
        			closekey(message);
        			return 0;
        		}
		        else if(choose==2)
        		{
            			openkey(message);
            			return 0;
        		}
		        else
        		{
            			std::cout<<"大哥,我们这里只能输入1和2,别和我们过不去\n";
			            std::cout<<"请重新输入你想要进行的操作:1.加密   2.解密\n";
		        }
    	}
	    return 0;
}

void closekey(char message[])            //加密过程
{
    	char key1[30]="QASWZXDECVFRBNGTHYJUMKIOLP";       //密匙
    	char key2[30]="plijkomnhutybvfgcxerdwsqza";       //密匙
    	int er=0;                                         //错误输入截取
	    int len=0;                                        //限制长度
    	char error[45];
    	std::cout<<"输入你想要加密的数据(数据不能超过45位):";
    	while(len<45)
    	{
		        std::cin>>message;
	        len=strlen(message);
	        std::cout<<"你输入的加密数据为:"<<message<<"\n";
        		for(int i=0;i<len;i++)
        		{
            			if(message[i]>='A'&&message[i]<='Z')
            			{
				                message[i]=key1[message[i]-'A'];
			            }
            			else if(message[i]>='a'&&message[i]<='z')
            			{
            				message[i]=key2[message[i]-'a'];
            			}
            			else if (message[i]>=48&&message[i]<=57)
            			{
            				message[i]+=10;
            			}
            			else
            			{
				                error[er]=message[i];
				                std::cout<<"你输入的"<<error[er]<<"是不能被加密的,不能保证你的密文正                             确\n";
			            }
      		  }
        			std::cout<<"你的密文是:"<<message<<"\n\n\n";
	        std::cout<<"现在你可以继续输入你想要加密的数据:";
    	}
	    std::cout<<"你输入的数据大于45位,基于你不守规则,我决定停止运行";
    	return;
}

void openkey(char message[])             //解密过程
{
    	int key=0;
    	char key1[30]="QASWZXDECVFRBNGTHYJUMKIOLP";           //密匙
    	char key2[30]="plijkomnhutybvfgcxerdwsqza";           //密匙
    	int er=0;    //错误输入的截取
    	int len=0;   //限制长度  
    	char error[45];       //读取错误的函数
    	std::cout<<"输入你想要解密的数据:";
    	while(len<45)
    	{
        		std::cin>>message;
	        len=strlen(message);
	        std::cout<<"你输入的解密数据为:"<<message<<"\n";
        		for(int i=0;i<len;i++)
        		{
            			if(message[i]>='A'&&message[i]<='Z')
            			{
                				while(key1[key]!=message[i])
                				{
					                    ++key; 
                				}
                				message[i]=key+'A';
                				key=0;
			            }
            			else if(message[i]>='a'&&message[i]<='z')
            			{
                				while(key2[key]!=message[i])
                				{
                    					++key;
                				}
				                message[i]=key+'a';
				                key=0;
            			}
            			else if (message[i]>=58&&message[i]<=67)
            			{
				                message[i]-=10;
            			}
            			else
            			{
                				error[er]=message[i];
                				std::cout<<"你输入的"<<error[er]<<"可能是加密时没有加密的东西,不能保                证你的明文正确\n";
           			}
        		}
        		std::cout<<"你的明文是"<<message<<"\n\n\n";
		        std::cout<<"现在你可以继续你输入的解密数据:";
    }
	    std::cout<<"大兄弟,你输入的数据大于45位,我还是知道你是故意耍我的";
    	return ;
}

开源地址: 纯文本加密与解密: 纯文本加密与解密

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ww95z6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值