This is ni_crypt.c in view mode; [Download] [Up]
/* Two routines to encrypt/decrypt values for storage in NetInfo. The encrypting / decrypting algorithms used in the binary distributions have been removed and the routines have been set up to just do the hex encoding / decoding. */ static char toHex[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; static unsigned char fromHex[128] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0, 0,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; /* ni_encrypt will encrypt 16 bytes data from source, returning the hex encoded value in a 34 byte array target. The first character of the target will be a '+', to distinguish it from an unencoded password entry. */ void ni_encrypt(char *source, char *target) { int i, v; // To signal a crypted entry, uncomment this: // *target++ = '+'; for (i = 0; i < 16; i++) { // Put you crypting code here! Replacing the line below or the whole loop. v = (unsigned char)source[i]; *target++ = toHex[v>>4]; *target++ = toHex[v&0x0F]; } *target = '\0'; } /* ni_decrypt will decrypt 33 bytes data from source, returning the original 16 byte value in target. If the first character is not a '+', it will only convert from hex to binary. */ void ni_decrypt(char *source, char *target) { int i, v, decode; if (decode = (*source == '+')) source++; /* Skip the leading + */ for (i = 0; i < 16; i++) { v = fromHex[((unsigned char)*source++)&0x7F] << 4; v|= fromHex[((unsigned char)*source++)&0x7F]; if (decode) // Put you decrypting code here, or replace the whole loop! else target[i] = v; } } #ifdef TESTCRYPT void main(int argc, char **argv) { char buffer[33], result[17]; if (argc > 1) { ni_encrypt(argv[1], buffer); printf("encoding: %s --> %s\n", argv[1], buffer); ni_decrypt(buffer, result); result[16] = '\0'; printf("decoding: %s --> %s\n", buffer, result); } } #endif
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.