?? dataencrypt.c
字號:
/* * main.c * * Project: Dataencrypt * Author: root <root@localhost.localdomain> * Date: Tue Jul 27 11:47:16 CST 2004 */#ifdef HAVE_CONFIG_H#include <config.h>#endif#include <stdio.h>#include <stdlib.h>#include <time.h>#include <string.h>#define DATASIZE 64void fk();void encrypt(unsigned char *into,unsigned char *outof);unsigned long Sbox(unsigned long key);unsigned long zkbuf[16];unsigned S0[256],S1[256],S2[256],S3[256];unsigned long zkbuf[16];unsigned long kbuf[16];int i,j,k;int main(int argc, char *argv[]){ //unsigned long zkbuf[16]; unsigned long *kbufpt; //unsigned long *zkbufpt; unsigned char *mingwenpt; unsigned char *miwenpt; unsigned char mingwenbuf[DATASIZE]; unsigned char miwenbuf[DATASIZE]; FILE *pfile,*fp; int i; //int j; int bytes_read=DATASIZE; //int bytes_write; bzero(mingwenbuf,DATASIZE); bzero(miwenbuf,DATASIZE); mingwenpt=mingwenbuf; mingwenpt=miwenbuf; for(i=0;i<16;i++) { kbuf[i]=0x00000000L; } kbufpt=kbuf; if((pfile=fopen("/tmp/mingwen","r+"))==NULL) { printf("Can't find the file !"); return(0); } if((fp=fopen("/tmp/miwen","w+"))==NULL) { printf("Can't find the file !"); return(0); } while(bytes_read==DATASIZE) { bzero(mingwenbuf,DATASIZE); bzero(miwenbuf,DATASIZE); /*for(i=0;i<DATASIZE;i++) { mingwenbuf[i]=0; } for(i=0;i<DATASIZE;i++) { miwenbuf[i]=0; } */ if((bytes_read=fread(mingwenpt,1,DATASIZE,pfile))<1) break; printf("bytes_read is %d\n",bytes_read); encrypt(mingwenpt,miwenpt); fwrite(miwenpt,1,DATASIZE,fp); } fclose(pfile); fclose(fp); return EXIT_SUCCESS;}/********************************************************** S-BOX :k--->zk***********************************************************/unsigned long Sbox(unsigned long key){ int A,B,C,D; unsigned long Zk; Zk=0; A=(int)((key&0x000000ff)); B=(int)((key&0x0000ff00)>>8); C=(int)((key&0x00ff0000)>>16); D=(int)((key&0xff000000)>>24); Zk=((unsigned long)(S0[A]))|Zk; Zk=(((unsigned long)(S1[B]))<<8)|Zk; Zk=(((unsigned long)(S2[C]))<<16)|Zk; Zk=(((unsigned long)(S3[D]))<<24)|Zk; return(Zk);}/********************************************************** FK:generation of child key **********************************************************/void fk(unsigned long key){ //unsigned long kbuf[16]; unsigned long S0[256],S1[256],S2[256],S3[256]; int i; int b; int c; int d; int a; bzero(zkbuf,64); a=(kbuf[0])& 0x000000ff; b=(int)(((kbuf[0])&0x0000ff00)>>8); c=(int)(((kbuf[0])&0x00ff0000)>>16); d=(int)(((kbuf[0])&0xff000000)>>24); srand((unsigned)time(NULL)); for(i=0;i<256;i++) { S0[i]=rand()%256; } for(i=0;i<256;i++) { S1[i]=rand()%256; } for(i=0;i<256;i++) { S2[i]=rand()%256; } for(i=0;i<256;i++) { S3[i]=rand()%256; } zkbuf[0]= ((unsigned long)S0[a])|zkbuf[0]; zkbuf[0]=(((unsigned long)(S1[b]))<<8)|zkbuf[0]; zkbuf[0]=(((unsigned long)(S2[c]))<<16)|zkbuf[0]; zkbuf[0]=(((unsigned long)(S3[d]))<<24)|zkbuf[0]; for(i=1;i<16;i++) { zkbuf[i]=(Sbox((zkbuf[i-1]^kbuf[i]))); }}/***************************************************** encrypt function realization******************************************************/void encrypt(unsigned char *into,unsigned char *outof){ unsigned long zkbuf[16]; unsigned char mingmibuf[DATASIZE]; unsigned char tempbuf[DATASIZE]; for(i=0;i<DATASIZE;i++) { mingmibuf[i]=0; } for(i=0;i<DATASIZE;i++) { tempbuf[i]=0; } for(j=0;j<16;j++) { mingmibuf[0]=(into[0])^zkbuf[j]; tempbuf[60]=mingmibuf[0]; mingmibuf[1]=(into[1])^(zkbuf[j]>>8); tempbuf[61]=mingmibuf[1]; mingmibuf[2]=(into[2])^(zkbuf[j]>>16); tempbuf[62]=mingmibuf[2]; mingmibuf[3]=(into[3])^(zkbuf[j]>>24); tempbuf[63]=mingmibuf[3]; for(i=1;i<16;i++) { mingmibuf[4*i]=(into[4*i])^mingmibuf[4*i-4]; tempbuf[4*i-4]=mingmibuf[4*i]; mingmibuf[4*i+1]=(into[4*i+1])^mingmibuf[4*i-3]; tempbuf[4*i-3]=mingmibuf[4*i+1]; mingmibuf[4*i+2]=(into[4*i+2])^mingmibuf[4*i-2]; tempbuf[4*i-2]=mingmibuf[4*i+2]; mingmibuf[4*i+3]=(into[4*i+3])^mingmibuf[4*i-1]; tempbuf[4*i-1]=mingmibuf[4*i+3]; } for(i=0;i<DATASIZE;i++) { into[i]=tempbuf[i]; } } for(i=0;i<DATASIZE;i++) { outof[i]=tempbuf[i]; } for(i=0;i<DATASIZE;i++) { mingmibuf[i]=0; }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -