近期,我与另一个同伴正在负责编写一个对文件程序加密的程序,在编写过程中我们通过将一个大程序拆分成一个一个小程序,整个程序的目的是在于对一个电脑中的txt文件进行rsa加密。最后将生成一串二进制的密文输入到文件中。
首先我们将总的程序拆分成三个小程序,第一个是负责加密的汉子转二进制。
具体代码如下:#include<stdio.h>
#include<stdlib.h>
void conv(char *c)
{
char ch[9] = {‘\0‘};
int i;
int j = 0;
int count = 0;
//char t[3] = {‘\0‘};
//int a[32]={0,0,1,1,0,1,1,0,1,1,0,0,0,0,11,0,1,1,1,0,0,1,1,1,1,1,1,0,1,1,1};
while(‘\0‘ != c[j])
{
for(i = 7;i >= 0;i--)
{
ch[i] = (c[j]&1)+‘0‘;
c[j]>>=1;
}
printf("%s",ch);
j++;
}
}
int main()
{
char use;
char c[100];
while(1)
{
printf("请输入需要转换的文字:");
scanf("%s",c);
conv(c);
printf("\n");
}
return 0;
}
第二个程序是有我负责的怎样将文件中的汉子提取出来并将加密后的二进制输入到指定文件中。其中用户需通过输入指定文件路径来选择文件。
具体代码如下:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(void)
{
ifstream in;
ofstream out;
string filename;
int x;
cout<<"请输入指定文件路径:\n";
cin>>filename;
in.open(filename,iOS::in);
if(!in)
{
cout<<"打开文件出错!";
return 1;
}
in>>x;
in.close();
int key(int a);//定义加密函数
x=key(x);
out.open(filename,ios::trunc);
if(!out)
{
cout<<"打开文件出错!";
return 1;
}
out<<dec<<x<<endl;
out.close();
return 0;
}
int key(int x)
{
int t=102;
x=x+t;
return x;
}
目前我正在和同学一起负责合并的这一部分,具体思路是将文字转二进制实现成一个函数conv,然后运用在文件读取输入中,达到一旦用户输入一个文件路径然后调用加密函数conv就能真正实现对一段文件的加密。在合并过程中,我们发现了很多问题,也养成了许多编程的好习惯,例如:在合并时,若发现一些语句可能再合并后就没用了,也不必将其删除,将这条语句注释掉即可!还有,当程序合并后,难免会发生遗漏括号的现象,所以在输入括号时应养成一次性输完一对括号才行!
目前我们的进度在已经进行到了正在编写对密文进行解密的函数的阶段,在接下来的一段时间里,一个完整的加密软件将会成型!