Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
29 views

#Include #Include #Include #Include

This document contains source code for a program that encrypts a file using a 256-bit encryption key. It takes an input file, output file, and encryption key as command line arguments. The code defines encryption functions like modseed() to modify the encryption seed and seedsum() to generate the encryption checksum. It then encrypts the input file by reading it in buffers, encrypting each byte using the seed functions, and writing the encrypted output to the output file. Status messages are printed to stderr during the encryption process.

Uploaded by

RednusVijay
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
29 views

#Include #Include #Include #Include

This document contains source code for a program that encrypts a file using a 256-bit encryption key. It takes an input file, output file, and encryption key as command line arguments. The code defines encryption functions like modseed() to modify the encryption seed and seedsum() to generate the encryption checksum. It then encrypts the input file by reading it in buffers, encrypting each byte using the seed functions, and writing the encrypted output to the output file. Status messages are printed to stderr during the encryption process.

Uploaded by

RednusVijay
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 3

//**************************************

//INCLUDE files for :crypt.c


//**************************************
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
//**************************************
// Name: CryptCode.c
// Description:Encrypts file and outputs it to a file or stdout
// By:Praveena M
//
//
// Inputs:CryptCode.exe <infile> <outfile> <key>
//
//**************************************
#define cypherbits 256 /* encryption strength in bits */
#define cypher cypherbits/(sizeof(int)*8)
int seed[cypher];
void modseed() {
int x;
for(x=1;x<cypher;x++)seed[x]=seed[x]*0x81772012+seed[x]
+0x49122035+seed[x+1];
for(x=1;x<cypher;x++)seed[0]=seed[0]^seed[x];
}
int seedsum() {
int n,x;
n=0x80379251;
for(x=0;x<cypher;x++)n=n^seed[x];
return((n>>24)^((n>>16)&255)^((n>>8)&255)^(n&255));
}
char strequ(char *s1,char *s2) {
int p;
p=0;
while((s1[p]==s2[p])&&(s1[p]!=0)&&(s2[p]!=0))p++;
if(s1[p]==s2[p])return(1); else return(0);
}
int main(int argc,char *argv[]) {
char
banner[]="\x43\x6f\x64\x65\x64\x20\x62\x79\x20\x50\x72\x61\x76\x65\x65\x6e\x6
1"
"\x20\x6f\x66\x20\x49\x6e\x64\x69\x61"
"\x20\x28\x70\x76\x6e\x63\x61\x64\x40\x6b\x72\x65\x63\x2e\x65\x72\x6e\x65\x74
\x2e\x69\x6e\x29";
char buf[2048];
int p,r,l,i,t,s,x;
char b,c,pct,lpct;
FILE *infile=NULL,*outfile=NULL;
fprintf(stderr, "%s\n", banner);
if(argc!=4){
fprintf(stderr,"use: %s <infile> <outfile> <key>\n",argv[0]);
return -1;
}
if(strequ(argv[1],"stdin"))infile=stdin; else
if((infile=fopen(argv[1],"r"))==NULL){

fprintf(stderr,"failed to open %s\n",argv[1]);


return -1;
}
if(strequ(argv[2],"stdout"))outfile=stdout; else
if((outfile=fopen(argv[2],"w"))==NULL){
fprintf(stderr,"failed to create %s\n",argv[2]);
return -1;
}
if(infile!=stdin) {
fseek(infile,0,SEEK_END);
l=ftell(infile);
rewind(infile);
} else l=0;
s=l;
t=0;
pct=0;
if(l<1)fprintf(stderr,"Encrypting data.. (%d bit
cypher)\n",cypher*sizeof(int)*8);
else fprintf(stderr,"Encrypting %d bytes.. (%d bit
cypher)\n",l,cypher*sizeof(int)*8);
/* bzero(seed,sizeof(seed)); */
modseed();
p=0;
while(argv[3][p]!=0){
modseed();
seed[0]=seed[0]+argv[3][p];
modseed();
p++;
}
i=0;
if(l>0){
fputc('[',stderr);
x=(l/sizeof(buf));
if(l-x*sizeof(buf)!=0)x+=1;
if(x>38)x=38;
for(p=0;p<x;p++) fputc(32,stderr);
fputc(']',stderr);
fputc(13,stderr);
fputc('[',stderr);
fflush(stderr);
}
c=1;
while(c){
r=fread(&buf,1,sizeof(buf),infile);
if(r>0) {
t+=r;
if(l>0){
lpct=pct;
pct=t/(l/x);
if(pct>lpct) {
fputc(88+32*i,stderr);
fflush(stderr);
i=1-i;
}
} else {
fputc(88+32*i,stderr);
fflush(stderr);

i=1-i;
}
p=0;
while(p<r) {
modseed();
buf[p]=buf[p]^seedsum();
p++;
}
if(fwrite(&buf,1,r,outfile)!=r) {
fprintf(stderr,"\nerror writing data\n");
return -1;
}
} else c=0;
}
if(l>0)fputc(']',stderr);
fprintf(stderr,"\nDone. Wrote %d bytes.\n",t);
}

You might also like