blob: 0ca011e031534b5e6cb0a1bccdff63caa1673d5b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
char *
keydecode(char *key)
{
unsigned int len, half, i, j;
char *newkey;
if (key == NULL) {
err: return (key);
}
len = strlen(key);
half = len / 2;
if ((len %2) != 0) goto err; /* len must be even */
newkey = malloc(len);
/* unpack the old bytes */
for (j = 1, i = 0; i < half; i++, j +=2) newkey[j] = key[i];
/* unpack the even bytes */
for (j = 0, i = half; i < len; i++, j +=2) newkey[j] = key[i];
memcpy(key, newkey, len);
free(newkey);
return (key);
}
|