DevC++ 爆戳了
#include<bits/stdc++.h>
#define elif else if
using namespace std;
char hex[17]="0123456789abcdef";
short dec[128]={
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,10,11,12,13,14,15, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
string encrypt(string n){
string x;
for(auto i:n){
x+=hex[(i/16+3)%16];
x+=hex[(i%16+3)%16];
}
for(int i=0,j=x.size()-1;i<j;i++,j--){
swap(x[i],x[j]);
}
n="";
for(int i=0;i<x.size();i+=2){
n+=char(dec[x[i]]*16+dec[x[i+1]]);
}
return n;
}
string decrypt(string n){
string x;
for(auto i:n){
x+=hex[(i/16+13)%16];
x+=hex[(i%16+13)%16];
}
for(int i=0,j=x.size()-1;i<j;i++,j--){
swap(x[i],x[j]);
}
n="";
for(int i=0;i<x.size();i+=2){
n+=char(dec[x[i]]*16+dec[x[i+1]]);
}
}
int secret_key(char n[]){
int skey=1;
for(int i=0;n[i]!=0;i++){
skey=skey*int(abs(n[i]))%10007;
}
return skey;
}
int main(int argc,char **argv){
char fn[260];
int skey;
cout<<"请输入您要加密的文件路径(不能包含空格):";
cin>>fn;
cout<<"请输入文件验证码:";
cin>>skey;
if(skey!=secret_key(fn)){
system("cls");
cout<<"验证码错误\n";
system("pause");
return 0;
}
system("cls");
cout<<"正在操作";
ifstream fin(fn);
string n;
string x;
while(fin>>x){
n=n+"\n"+x;
}
ofstream fout(fn,ios::trunc);
fout<<encrypt(n);
system("cls");
cout<<"操作成功\n";
system("pause");
return 0;
}