Articles by "Cryptography"
Showing posts with label Cryptography. Show all posts

Caesar Cipher

The Caesar cipher is one of the earliest known and simplest ciphers. It is a type of substitution cipher in which each letter in the plaintext is 'shifted' a certain number of places down the alphabet. For example, with a shift of 1, A would be replaced by B, B would become C, and so on. The method is named after Julius Caesar, who apparently used it to communicate with his generals.
More complex encryption schemes such as the Vigenère cipher employ the Caesar cipher as one element of the encryption process. The widely known ROT13 'encryption' is simply a Caesar cipher with an offset of 13. The Caesar cipher offers essentially no communication security, and it will be shown that it can be easily broken even by hand.

C Program For Caesar Cipher [Encryption]


#include<stdio.h>
int main()
{
    char msg[100], ch;
    int i,key;
    printf("Enter a plaintext \n");
    gets(msg);
    printf("Enter key");
    scanf("%d",&key);
    for(i=0;msg[i]!='\0';i++)
    {
        ch=msg[i];
        if(ch>='a'&&ch<='z')
        {
            ch=ch+key;
            if(ch>'z')
            {
                ch=ch-'z'+'a'-1;
            }
            msg[i]=ch;
        }
        else if(ch>='A'&&ch<'Z')
        {
            ch=ch+key;
            if(ch>'Z')
            {
                ch=ch='Z'+'A'-1;
            }
            msg[i]=ch;
        }
    }
    printf("Encrypted message: %s", msg);
    return 0;
}

C Program For Caesar Cipher [Encryption]


#include<stdio.h>
int main()
{
    char msg[100], ch;
    int i,key;
    printf("Enter a Encrypted test \t");
    gets(msg);
    printf("Enter key \t");
    scanf("%d",&key);
    for(i=0;msg[i]!='\0';i++)
    {
        ch=msg[i];
        if(ch>='a'&&ch<='z')
        {
            ch=ch-key;
            if(ch<'a')
            {
                ch=ch+'z'-'a'+1;
            }
            msg[i]=ch;
        }
        else if(ch>='A'&&ch<'Z')
        {
            ch=ch+key;
            if(ch<'A')
            {
                ch=ch+'Z'-'A'+1;
            }
            msg[i]=ch;
        }
    }
    printf("Dycrypted message: %s", msg);
    return 0;
}

Introduction


It is Better than Caesar Cipher. If, instead the “cipher” line can be any permutation of the key 26 alphabetic characters, then there are 26! Or greater than 4 * 1026 possible keys. This is 10 orders of magnitude greater than the key space for DES and would seem to as a Mono-alphabetic substitution cipher, because a single cipher alphabet is used per message.
There is however, another line of attack. If one analytically knows the nature of the plain text, then the analyst can exploit the regularities of the language.

Limitations

  1. Monoalphabetic ciphers are easy to break because they reflect the frequency data of the original alphabet.
  2. A countermeasure is to provide multiple substitutes, known as homophones, for a single letter


C Program For Mono Alphabetic Cipher Encryption-Decryption

#include<stdio.h>

#include<conio.h>

#include<string.h>

int main()

{

    char pt[52]={'A','B','C','D','E','F','G','H','I','J','K',

'L','M','N','O','P','Q','R','S','T','U','V',

'W','X','Y','Z','a','b','c','d','e','f','g','h',

'i','j','k','l','m','n','o','p','q','r','s','t',

'u','v','w','x','y','z'};

    char ct[52]={'Z','Y','X','W','V','U','T','S','R','Q','P','O',

'N','M','L','K','J','I','H','G','F','E','D','C',

'B','A','z','y','x','w','v','u','t','s','r','q','p','o',

                'n','m','l','k','j','i','h','g','f','e','d','c','b','a'};

    char p[20]={'\0'},c[20]={'\0'},r[20]={'\0'};

    int i,j;

    printf("\n enter the plain text:");

    gets(p);

    for(i=0;i<strlen(p);i++)

    {

        for(j=0;j<52;j++)

        {

            if(pt[j]==p[i])

            {

                c[i]=ct[j];

            }

        }

    }

    printf("\n cipher text is: %s",c);

    for(i=0;i<strlen(c);i++)

    {

        for(j=0;j<52;j++)

        {

            if(ct[j]==c[i])

            {

                r[i]=pt[j];

            }

        }

    }

    printf("\n \n plain text is: %s",r);

}




OUTPUT
Implementation Of Mono Alphabetic Cipher Encryption-Decryption