0% found this document useful (0 votes)
29 views6 pages

Expt 9

The document describes implementing a simple columnar transposition cipher technique. It explains the encryption and decryption process, provides pseudocode for the encryption and decryption algorithms, and includes sample C code to encrypt and decrypt messages using this technique.

Uploaded by

Madhura Kank
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
29 views6 pages

Expt 9

The document describes implementing a simple columnar transposition cipher technique. It explains the encryption and decryption process, provides pseudocode for the encryption and decryption algorithms, and includes sample C code to encrypt and decrypt messages using this technique.

Uploaded by

Madhura Kank
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 6

Experiment No.

: 9

ELO9ss-

Write a program to implement Simple Columnar Transposition technique

Objective(s)-

Implementation Simple Columnar Transposition technique

Theory-

In a transposition cipher, the order of the alphabets is re-arranged to obtain the cipher-text.

1. The message is written out in rows of a fixed length, and then read out again column by
column, and the columns are chosen in some scrambled order.
2. Width of the rows and the permutation of the columns are usually defined by a keyword.

2. For example, the word HACK is of length 4 (so the rows are of length 4), and the permutation
is defined by the alphabetical order of the letters in the keyword. In this case, the order would
be “3 1 2 4”.
3. Any spare spaces are filled with nulls or left blank or placed by a character (Example: _).
4. Finally, the message is read off in columns, in the order specified by the keyword.

Decryption

1. To decipher it, the recipient has to work out the column lengths by dividing the message length
by the key length.
2. Then, write the message out in columns again, then re-order the columns by reforming the key
word.

Program

#include<stdio.h>

#include<string.h>

void cipher(int i,int c);

int findMin();

void makeArray(int,int);

char arr[22][22],darr[22][22],emessage[111],retmessage[111],key[55];

char temp[55],temp2[55];

int k=0;

int main() {

char *message,*dmessage;

int i,j,klen,emlen,flag=0;

int r,c,index,min,rows;

clrscr();

printf("Enetr the key\n");

fflush(stdin);

gets(key);

printf("\nEnter message to be ciphered\n");

fflush(stdin);

gets(message);

strcpy(temp,key);

klen=strlen(key);

k=0;

for (i=0; ;i++) {


if(flag==1)

break;

for (j=0;key[j]!=NULL;j++) {

if(message[k]==NULL) {

flag=1;

arr[i][j]='-';

} else {

arr[i][j]=message[k++];

r=i;

c=j;

for (i=0;i<r;i++) {

for (j=0;j<c;j++) {

printf("%c ",arr[i][j]);

printf("\n");

k=0;

for (i=0;i<klen;i++) {

index=findMin();

cipher(index,r);

emessage[k]='\0';

printf("\nEncrypted message is\n");


for (i=0;emessage[i]!=NULL;i++)

printf("%c",emessage[i]);

printf("\n\n");

//deciphering

emlen=strlen(emessage);

//emlen is length of encrypted message

strcpy(temp,key);

rows=emlen/klen;

//rows is no of row of the array to made from ciphered message

rows;

j=0;

for (i=0,k=1;emessage[i]!=NULL;i++,k++) {

//printf("\nEmlen=%d",emlen);

temp2[j++]=emessage[i];

if((k%rows)==0) {

temp2[j]='\0';

index=findMin();

makeArray(index,rows);

j=0;

printf("\nArray Retrieved is\n");

k=0;

for (i=0;i<r;i++) {

for (j=0;j<c;j++) {

printf("%c ",darr[i][j]);
//retrieving message

retmessage[k++]=darr[i][j];

printf("\n");

retmessage[k]='\0';

printf("\nMessage retrieved is\n");

for (i=0;retmessage[i]!=NULL;i++)

printf("%c",retmessage[i]);

getch();

return(0);

void cipher(int i,int r) {

int j;

for (j=0;j<r;j++) { {

emessage[k++]=arr[j][i];

// emessage[k]='\0';

void makeArray(int col,int row) {

int i,j;

for (i=0;i<row;i++) {

darr[i][col]=temp2[i];

}
int findMin() {

int i,j,min,index;

min=temp[0];

index=0;

for (j=0;temp[j]!=NULL;j++) {

if(temp[j]<min) {

min=temp[j];

index=j;

temp[index]=123;

return(index);

Output---

Conclusion-Thus we have studied Simple Columnar Transposition technique

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy