习题4_34加密系统

//Jiami.h
class Jiami
{
public :
	void welcomeUI_1();//开始加密
	void welcomeUI_2();//开始解密
	void getEncryptNumber(); //录入要加密的四位数据
	void getDecodeNumber();//录入要解密的四位数据
	void encrypt();//加密算法
	void decode();//解密算法
private:
	int beforeEncryptNumber[4];//设计一个数组来存放解加密之前的数据
	int afterEncryptNumber[4];//存放加密后的数
	int beforeDecodeNumber[4];//存放解密前的数组
	int afterDecodeNumber[4];//存放解密后的数组
};

 

//Jiami.cpp
#include"Jiami.h"
#include<iostream>
using namespace std;

void Jiami::welcomeUI_1()
{
	cout << "下面是加密过程,需要先输入加密前的四位整数,然后可得出加密后的四位整数" << endl;		
}

void Jiami::welcomeUI_2()
{
	cout << "下面是解密过程,需要先输入加密后的四位整数,然后可得加密出前的四位整数" << endl;		
}

//录入加密前的四位数据
void Jiami::getEncryptNumber()//将四位数分入数组中去
{
	int tempNumber ;
	cout << "请输入一个四位整数" << endl;
	cin >> tempNumber;

	for(int i=0;i<4;i++)//每次获取除以10的余数并且从数中减去这个余数
	{
		beforeEncryptNumber[i] = tempNumber%10 ;
		tempNumber = (tempNumber - beforeEncryptNumber[i])/10 ;
	}

	cout << "加密前的四位数为:" ;
	for(int j=3;j>=0;j--)
		cout << beforeEncryptNumber[j] ;
	cout << endl;
}

//录入解密前的数据
void Jiami::getDecodeNumber()//将四位数分入数组中去
{
	int tempNumber ;
	cout << "请输入加密后的四位整数" << endl;
	cin >> tempNumber;

	for(int i=0;i<4;i++)//每次获取除以10的余数并且从数中减去这个余数
	{
		beforeDecodeNumber[i] = tempNumber%10 ;
		tempNumber = (tempNumber - beforeDecodeNumber[i])/10 ;
	}

	cout << "解密前的四位数为:" ;
	for(int j=3;j>=0;j--)
		cout << beforeDecodeNumber[j] ;
	cout << endl;
}

//加密算法
void Jiami::encrypt()
{
	int temp;
	//将每位数字替换成它与7之和再用10求模的结果
	for(int k=0;k<4;k++)
		afterEncryptNumber[k] = (beforeEncryptNumber[k]+7)%10 ;
	
	//替换后的数第1、3位互换,第2、4位互换
	temp = afterEncryptNumber[0] ;
	afterEncryptNumber[0] = afterEncryptNumber[2] ;
	afterEncryptNumber[2] = temp;
	temp = afterEncryptNumber[1];
	afterEncryptNumber[1] = afterEncryptNumber[3] ;
	afterEncryptNumber[3] = temp;
	cout << "加密后的四位数为:" ;
	for(int j=3;j>=0;j--)//*********************j>=0写成j>+0看看会出现什么啊哈哈哈哈哈
		cout << afterEncryptNumber[j] ;
	cout << endl;
}

//解密算法
void Jiami::decode()
{
	int temp;
	
	//将每位数字计算换的加密前的数
	for(int k=0;k<4;k++)
	{
		if((beforeDecodeNumber[k]<=9)&&(beforeDecodeNumber[k]>=7))
			afterDecodeNumber[k] = beforeDecodeNumber[k]-7 ;
		else 
			afterDecodeNumber[k] = beforeDecodeNumber[k]+3 ;
	}
	
	//替换后的数第1、3位互换,第2、4位互换
	temp = afterDecodeNumber[0] ;
	afterDecodeNumber[0] = afterDecodeNumber[2] ;
	afterDecodeNumber[2] = temp;
	temp = afterDecodeNumber[1];
	afterDecodeNumber[1] = afterDecodeNumber[3] ;
	afterDecodeNumber[3] = temp;
	
	cout << "解密后的四位数为:" ;
	for(int j=3;j>=0;j--)//*********************j>=0写成j>+0看看会出现什么啊哈哈哈哈哈
		cout << afterDecodeNumber[j] ;
	cout << endl;
}

 

//main.cpp

#include<string>
#include"Jiami.h"

int main()
{
	//加密
	Jiami encrypt ;
	encrypt.welcomeUI_1();
	encrypt.getEncryptNumber();
	encrypt.encrypt();
	
	//解密
	Jiami decode;
	decode.welcomeUI_2();
	decode.getDecodeNumber();
	decode.decode();
	system("pause>>cout");
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值