Click here to Skip to main content
Licence CPOL
First Posted 2 Jan 2007
Views 16,115
Downloads 164
Bookmarked 3 times

Railfence cipher encoder

By | 2 Jan 2007 | Article
What it says on the tin.

Tester screenshot

Introduction

The rail fence cipher is where you have some text like joejoe and you split it on two lines like:

j e o
o j e

Now you combine the two lines and get: jeooje

Encoding

At school, I have been taught how to encode stuff into the rail fence cipher. Here's how:

/// <summary>
/// Encodes stuff
/// </summary>
/// <param name="input">The string to encode</param>
/// <returns>Encoding result</returns>
public static string Encode(string input)
{
    char[] inputc = input.ToCharArray();
    string pasA = "";
    string pasB = "";
    bool x = true;
    foreach(char ch in inputc)
    {
        if(x == true)
        {
            pasA += ch;
            x = false;
        }
        else
        {
            x = true;
            pasB += ch;
        }
    }
    return pasA + pasB;
}

Decoding

This is how to decode the stuff:

/// <summary>
/// Decodes stuff into plain text
/// </summary>
/// <param name="input">The string to decode</param>
/// <returns>The decoded result</returns>
public static string DeCode(string input)
{
    int lnl = (int)Math.Round((decimal)input.Length / 2);
    //Write Strings
    char[] ln1, ln2;
    ln1 = input.Substring(0, lnl).ToCharArray();
    ln2 = input.Substring(lnl).ToCharArray();
#if DEBUG
    Debug.WriteLine("Line 1: " + input.Substring(0, lnl));
    Debug.WriteLine("Line 2: " + input.Substring(lnl, input.Length - lnl));
#endif
    //Writen strings, now seperate into one
    bool top = true;
    string output = "";
    int x, topx, botx;
    x = 1; topx = 0; botx = 0;
    while( x != input.Length + 1)
    {
        if(top == true)
        {
            if(topx > ln1.Length - 1)
            {
                return output;
            }
            output += ln1[topx]; topx += 1; top = false;
#if DEBUG
            Debug.WriteLine("topx: " + topx + " ln1 length: " + ln1.Length);
            #endif
        }
        else
        {
            output += ln2[botx]; botx += 1; top = true;
        }
        x++;
    }
    return output;
}

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

joejoeiscool



United Kingdom United Kingdom

Member



Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
GeneralHelp. PinmemberAndrei710:32 4 Jan '07  
GeneralRe: Help. Pinmemberjoejoeiscool7:17 5 Jan '07  
GeneralRe: Help. PinmemberAndrei74:35 6 Jan '07  
GeneralRe: Help. Pinmemberjoejoeiscool6:57 8 Jan '07  
GeneralHelp Me Please. PinmemberAndrei715:27 3 Jan '07  
GeneralRe: Help Me Please. Pinmemberjoejoeiscool6:29 4 Jan '07  
GeneralSuggestions PinmemberJason McBurney11:07 2 Jan '07  
GeneralRe: Suggestions Pinmemberjoejoeiscool7:02 3 Jan '07  
GeneralRe: Suggestions Pinmemberjoejoeiscool6:42 4 Jan '07  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web04 | 2.5.120517.1 | Last Updated 2 Jan 2007
Article Copyright 2007 by joejoeiscool
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid