home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
144.lha
/
crypt.c
< prev
next >
Wrap
C/C++ Source or Header
|
1986-11-21
|
1KB
|
55 lines
/*must be linked with the math library, i.e lc -Lm crypt.c*/
#include <stdio.h>
#include <math.h>
#include <fcntl.h>
void setcrypt(string)
/*not a horribly intelligent way of making a seed, but it'll do*/
unsigned char *string;
{
long seed = 0;
unsigned char *ptr;
for (ptr=string; *ptr; ptr++) seed = seed*2 + *ptr;
srand48(seed);
}
unsigned char next()
/*get next random character*/
{
union res
{
long x;
unsigned char c[4];
} result;
unsigned char nextchar;
result.x = mrand48();
nextchar = result.c[0] + result.c[1] + result.c[2] + result.c[3];
return(nextchar);
}
void main(argc,argv)
int argc;
char *argv[];
{
char c,key[21];
int infile, outfile;
if (argc < 3) {puts("crypt: usage is crypt infile outfile"); exit(20);}
infile = open(argv[1],O_RDONLY,0);
if(poserr(argv[1])) exit(20);
outfile = creat(argv[2],0);
if(poserr(argv[2])) exit(20);
key[20] = '\0'; /*just in case he types too long a string*/
puts("Enter encryption/decryption key");
fflush(stdout);
if (!fgets(key,20,stdin) || key[0] == '\n') exit(10);
setcrypt(key);
while(1 == read(infile,&c,1))
{
c ^= next();
write(outfile,&c,1);
}
close(infile);
close(outfile);
}