📄 encry.cpp
字号:
// encry.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "string.h"
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#define DO_ENCRY 1
#if DO_ENCRY ==1
#define encry main
#else
#define decry main
#endif
// encry 基数,减数, 文件
//产生一个新的文件
//或者产生一个新的数组
//第一个字节说明填充的长度
//以4个字节为基本草组单位
int encry(int argc, char* argv[])
{
//encry pa pb file
if(argc<3 ){
printf("encry pa pa file");
_exit(0);
}
FILE * fd ,* fd_enc;
bool odd_flag_file=false;
fd =fopen(argv[3],"rb");
char buff[50];
sprintf(buff,"%s%s",argv[3],"end");
FILE* fd_2;
fd_enc = fopen(buff,"wb");
char word[2];
int mf = atoi(argv[1]);
int subf = atoi(argv[2]);
int theByts=0;
unsigned char dst[4];
char readb;
int dd,dc;
int time=0;
while(!feof(fd)){
readb = fread((void*)word,1,2,fd);
dd = word[0];
dc = word[1];
dd = ((dd<<8)&0xff00) | (dc&0xff);
dd = dd *mf - subf;
dst[0] = dd >>24;
dst[1] = dd>>16;
dst[2] = dd>>8;
dst[3] = dd;
if(readb!=0&&readb<2) {
odd_flag_file =true;
break;
}else if(readb==0){
break;
}
fwrite(dst,1,4,fd_enc);
// printf("%x %x %x %x",dst[0] ,dst[1] ,dst[2] ,dst[3] );
printf("%d ",time++);
}
fclose (fd_enc);
fclose(fd);
////////////////////////////////////////////////////////////////////////
sprintf(buff,"%sseed",argv[3]);
fd_2 =fopen(buff,"wb");
char vv[3];
vv[0] = mf;
vv[1]=subf;
if(odd_flag_file){
vv[2] = word[0];
fwrite(vv,1,3,fd_2);
}else
{
fwrite(vv,1,2,fd_2);
}
fclose(fd_2);
return 0;
}
int decry(int argc, char* argv[])
{
//de file fileseed
if(argc<2){
printf("decry file fileseed");
exit(0);
}
unsigned char buff[45];
strcpy((char*)buff,argv[1]);
strcat((char*)buff,"end");
FILE* fds = fopen((char*)buff,"rb");
FILE* fd_seed;
char len;
unsigned char buff_new[45];
char rbuf[4];
char wbuf[2];
char nread;
strcpy((char*)buff,argv[1]);
strcpy((char*)buff_new,(char*)buff);
sprintf((char*)buff,"%sseed",(char*)buff);
fd_seed=fopen((char*)buff,"rb");
nread = fread((void*)buff,1,3,fd_seed);
fclose(fd_seed);
int tmp;
int onceread;
fd_seed = fopen((char*)buff_new,"wb");
while(!feof(fds)){
if(0==(onceread=fread((void*)rbuf,1,4,fds)))break;
unsigned int a;
unsigned int b;
unsigned int c;
unsigned int d;
a = rbuf[0];
b =rbuf[1];
c =rbuf[2];
d=rbuf[3];
a = a<<24;
a = a& 0xff000000;
b= b<<16;
b=b&0xff0000;
c= c<<8;
c= c&0xff00;
d = d&0xff;;
printf("%x %x %x %x -",a,b,c,d );
char* p = (char*)&tmp;
p[0] = rbuf[3];
p[1] = rbuf[2];
p[2] = rbuf[1];
p[3] = rbuf[0];
//tmp = (a&0xff000000)|(b&0xff0000)|(c&0xff00)|(d&0xff);
printf("%x ",tmp );
tmp = tmp+(char)buff[1];
tmp = tmp/buff[0];
wbuf[0] = tmp>>8;
wbuf[1] = tmp;
printf("%x %x ",wbuf[0],wbuf[1] );
//getch();
fwrite((void*)wbuf,1,2,fd_seed);
}
if(nread==3){
fwrite((void*)(buff+2),1,1,fd_seed);
}
fclose(fd_seed);
fclose(fds);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -