请问下面这个C++程序要怎么写?
发布网友
发布时间:2024-04-10 02:42
我来回答
共2个回答
热心网友
时间:2024-04-11 13:57
这是在你的程序基础上修改而成的,试了一下,应该可以解密了,还有你给的程序加密后的结果好像不对吧,主要是千位个位交换,十位百位交换的代码有问题。
//2015/3/12 by LDSD
#include<iostream>
#include<fstream>
using namespace std;
void func1();
void func2();
void func3();
int one, ten, hundred, thousand, key, newNumber,sec;
void func1()//从文件读取需要加密的数据
{
ifstream out("c:\\secrect.txt");
if (!out)
{
cout << "Cannot open input file.\n";
}
out >> sec;
cout << sec<<endl;
}
void func2()//加密
{
int newOne, newTen, newHundred, newThousand;
int a, b;
cout<<"请输入任意密匙"<<endl;
cin >> key;
newOne = (one + key)% 10;
newTen = (ten + key) %10;
newHundred = (hundred + key) %10;
newThousand = (thousand + key) %10;
a = newOne;
newOne=newThousand;
newThousand = a;
a = newTen;
newTen=newHundred;
newHundred=a;
newNumber = newThousand * 1000 + newHundred * 100 + newTen * 10 + newOne;
cout << "newNumber= " << newNumber << endl;
}
void func3()//加密后的数据保存为一个新文件
{
ofstream myfile("c:\\newSecrect.txt");
if(!myfile)
{
cout<<"error !";
}
else
{
myfile<<newNumber;
myfile.close();
}
}
int change(int num)
{
if(num>=key)
return num-key;
else
return 10+num-key;
}
void decryption()
//该函数用来解密加密后的数据
{
int data,a;
ifstream fin("c:\\newSecrect.txt"); //从newSecrect文件读取密文,该文件的路径是c:\\newSecrect.txt
if (!fin)
{
cout << "Cannot open input file.\n";
}
fin >> data;
thousand=data/1000;
hundred=(data-thousand*1000)/100;
ten=(data-thousand*1000-hundred*100)/10;
one=data%10;
a = one;
one=thousand;
thousand = a;
a = ten;
ten=hundred;
hundred=a;
cout<<"还原后的数据是:"<<change(thousand)<<change(hundred)<<change(ten)<<change(one)<<endl;
}
void main()
{
func1();
thousand=sec/1000;
hundred=(sec-thousand*1000)/100;
ten=(sec-thousand*1000-hundred*100)/10;
one=sec%10;//获取密码各数位上的数
func2();
func3();
decryption();
}
热心网友
时间:2024-04-11 13:57
你的题目都是不完整的。。。