crypto-algorithms.c

Basic implementations of standard cryptography algorithms, like AES and SHA-1
git clone git://git.finwo.net/lib/crypto-algorithms.c
Log | Files | Refs | README

rot-13.c (1265B)


      1 /*********************************************************************
      2 * Filename:   rot-13.c
      3 * Author:     Brad Conte (brad AT bradconte.com)
      4 * Copyright:
      5 * Disclaimer: This code is presented "as is" without any guarantees.
      6 * Details:    Implementation of the ROT-13 encryption algorithm.
      7 				  Algorithm specification can be found here:
      8 				   *
      9 				  This implementation uses little endian byte order.
     10 *********************************************************************/
     11 
     12 /*************************** HEADER FILES ***************************/
     13 #include <string.h>
     14 #include "rot-13.h"
     15 
     16 /*********************** FUNCTION DEFINITIONS ***********************/
     17 void rot13(char str[])
     18 {
     19    int case_type, idx, len;
     20 
     21    for (idx = 0, len = strlen(str); idx < len; idx++) {
     22       // Only process alphabetic characters.
     23       if (str[idx] < 'A' || (str[idx] > 'Z' && str[idx] < 'a') || str[idx] > 'z')
     24          continue;
     25       // Determine if the char is upper or lower case.
     26       if (str[idx] >= 'a')
     27          case_type = 'a';
     28       else
     29          case_type = 'A';
     30       // Rotate the char's value, ensuring it doesn't accidentally "fall off" the end.
     31       str[idx] = (str[idx] + 13) % (case_type + 26);
     32       if (str[idx] < 26)
     33          str[idx] += case_type;
     34    }
     35 }