我的加密算法
以下是我个人写的一个加密算法,编译环境为TC20,当然在VC60下也应该可以编译,大家帮我看看调试加密性能如何,欢迎进行一切不择手段反编译汇编,看看是否可盗取得到密码.
有结果和我联系. E-MAIL:wgjmail@cmmail.com QQ:21898527
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 20
main(int argc,char *argv[])
{
void lock();
void unlock();
FILE *fp;
int n=2;
argv[1]=strupr(argv[1]);
while(n<argc)
{
if((fp=fopen(argv[n],"rb+"))!=NULL)
{
if(strcmp(argv[1],"/L")==0)
lock(fp,argv[n]);
if(strcmp(argv[1],"/U")==0)
unlock(fp,argv[n]);
fclose(fp);
}
else
printf("\tSORRY!!! File %s not found.\n",strupr(argv[n]));
n++;
}
if(argc<=2)
{
printf("Usage MYLOCK /L /U file1 file2 ...\n");
printf("\nWGJ\t1.1\t 2002.7.25-2002.7.28");
}
}
void Get_password(pass,max)
int max;
unsigned char *pass;
{
int n;
for(n=0;n<max-1;n++)
{
*pass=(char)getch();
if((int)*pass!=13)
printf("*");
else
break;
pass++;
}
*pass='\0';
}
void lock(fp,filename)
FILE *fp;
char *filename;
{
FILE *fp2;
int num,flag,len;
unsigned long t,filelen;
unsigned char ch,key,key2,pass[MAX],password[MAX];
do
{
printf("FILE: %-13s \tPassword:",strupr(filename));
Get_password(pass,MAX);
printf("\n\t\t\tPassword again:");
Get_password(password,MAX);
printf("\n");
flag=strcmp(pass,password);
}while(flag);
fp2=fopen("temp","wb");
randomize();
key=random(256);
key2=key;
fputc(key,fp2);
len=strlen(pass);
for(num=0;num<len;num++)
key2=(key2 ^ pass[num])+pass[num];
fputc(key2,fp2);
num=0;
ch=fgetc(fp);
while(!feof(fp))
{
ch=ch ^ pass[num];
fputc(ch,fp2);
ch=fgetc(fp);
num++;
if(num>=len)
num=0;
}
filelen=ftell(fp);
for(t=0;t<filelen;t++)
fputc(0,fp);
fclose(fp);
fclose(fp2);
remove(filename);
rename("temp",filename);
printf("\t\t\tLocked,OK.\n");
for(num=0;num<len;num++)
pass[num]=password[num]=num;
num=0;len=0;
t=0;filelen=0;
ch=0;key=0;key2=0;
}
void unlock(fp,filename)
FILE *fp;
char *filename;
{
FILE *fp2;
int flag,len,num;
unsigned long t,filelen;
unsigned char ch,key,key2,password[MAX];
key=fgetc(fp);
key2=fgetc(fp);
printf("FILE: %-13s \tPassword:",strupr(filename));
Get_password(password,MAX);
len=strlen(password);
for(num=len-1;num>=0;num--)
key2=(key2-password[num]) ^ password[num];
if (key==key2)
flag=0;
if(!flag)
{
num=0;
ch=fgetc(fp);
fp2=fopen("temp","wb");
while(!feof(fp))
{
ch=ch ^ password[num];
fputc(ch,fp2);
ch=fgetc(fp);
num++;
if(num>=len)
num=0;
}
filelen=ftell(fp);
for(t=0;t<filelen;t++)
fputc(0,fp);
fclose(fp);
fclose(fp2);
remove(filename);
rename("temp",filename);
printf("\n\t\t\tUnlock,OK.\n");
}
else
printf("\n\t\t\tPassword Error!!!\n");
for(num=0;num<len;num++)
password[num]=num;
num=0;len=0;
t=0;filelen=0;
ch=0;key=0;key2=0;
fclose(fp);
fclose(fp2);
}