5752004 [rkeene@sledge /home/rkeene/devel/old/encrypt]$ cat -n encrypt.c
 1 /*
 2     Encrypt data.
 3 */
 4 #include "encrypt.h"
 5 #include <unistd.h>
 6 #include <stdlib.h>
 7 #include <string.h>
 8 #ifdef RANDOM_DEV
 9 #include <sys/types.h>
10 #include <sys/stat.h>
11 #include <fcntl.h>
12 #else
13 #include <time.h>
14 #endif
15 
16 char *cryptdata(unsigned char key[256], unsigned char *data, int size) {
17     int i;
18     static char *result;
19         result=malloc(size);
20     for (i=0;i<size;i++) {
21         result[i]=key[(int) data[i]];
22     }
23     return(result);
24 }
25 
26 char *decryptdata(unsigned char key[256], unsigned char *data, int size) {
27     int i;
28     char reversekey[256];
29     static char *result;
30     result=malloc(size);
31     for (i=0;i<256;i++) reversekey[(int) key[i]]=i;
32     for (i=0;i<size;i++) {
33         result[i]=reversekey[(int) data[i]];
34     }
35     return(result);
36 }
37 
38 char *generatekey(void) {
39     static char key[256];
40     char used[256];
41     int i,x;
42 #ifdef RANDOM_DEV
43     unsigned char buff[1];
44     int fd;
45     fd=open(RANDOM_DEV, O_RDONLY);
46 #endif
47     for (i=0;i<256;i++) used[i]=0;
48     for (i=0;i<256;i++) {
49 #ifdef RANDOM_DEV
50         read(fd, buff, 1);
51         x=buff[0];
52 #else
53         srand(time(NULL)%rand());
54         x=1+(int) (255.0*rand()/(RAND_MAX+1.0));
55 #endif
56         if (used[x]==0) { key[i]=x; used[x]=1; } else { i--; }
57     }
58 #ifdef RANDOM_DEV
59     close(fd);
60 #endif
61     return(key);
62 }
5752005 [rkeene@sledge /home/rkeene/devel/old/encrypt]$

Click here to go back to the directory listing.
Click here to download this file.
last modified: 2000-02-06 21:23:42