0% found this document useful (0 votes)
28 views14 pages

Cnslabtest

Uploaded by

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

Cnslabtest

Uploaded by

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

1 a) Caesar

#include<stdio.h>
#include<ctype.h>
void main()
{
char text[500], ch;
int key;
printf("Enter a plain text: ");
scanf("%s", text);
printf("Enter the key: ");
scanf("%d", & key);
for (int i = 0; text[i] != '\0'; ++i) {ch
= text[i];
if (isalnum(ch))
{
if (islower(ch))
ch = (ch - 'a' + key) % 26 + 'a';if
(isupper(ch))
ch = (ch - 'A' + key) % 26 + 'A';
}
text[i] = ch;
}
printf("Encrypted message: %s", text);for
(int i = 0; text[i] != '\0'; ++i){
ch = text[i];
if (isalnum(ch))
{
if (islower(ch))
ch = (ch - 'a' - key + 26) % 26 + 'a';if
(isupper(ch))
ch = (ch - 'A' - key + 26) % 26 + 'A';
}
text[i] = ch;
}
printf("\nDecrypted message: %s", text);

CNS lab 1
1b)Monoalphabetic

#include<stdio.h>
#include<string.h>
#include<ctype.h>
void main()
{
char pt[26] =
{'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[26] =
{'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("Enter the plain text: ");
gets(p);
for(i=0;i<strlen(p);i++)
for(j=0;j<26;j++)
if(pt[j] == p[i])
c[i] = ct[j];
printf("\nCipher text: %s",c);
for(i=0;i<strlen(c);i++)
for(j=0;j<26;j++)
if(ct[j] == c[i])
r[i] = pt[j];
printf("\nPlain text: %s\n",r);
}

CNS lab 2
2) Play fair

#include<stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 100
void generateKeyTable(char key[], int ks, char keyT[5][5])
{
int dicty[26] = {0}, i = 0, j = 0;
dicty['j' - 'a'] = 1;
for (int k = 0; k < ks; k++) {
if (dicty[key[k] - 'a'] == 0 && key[k] != 'j') {
dicty[key[k] - 'a'] = 1;
keyT[i][j++] = key[k]; if
(j == 5) i++, j = 0;
}
}
for (int k = 0; k < 26; k++) {if
(dicty[k] == 0) {
keyT[i][j++] = (char)(k + 'a');if
(j == 5) i++, j = 0;
}
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%c ",keyT[i][j]);
}
printf("\n");
}
}
int prepare(char str[], int len)
{
for (int i = 0; i < len; i += 2) {
if (str[i] == str[i+1]) {
for (int j = len; j > i + 1; j--)
str[j] = str[j - 1];
str[i + 1] = 'x';
len++;
}
}
CNS lab 3
if (len % 2 != 0) str[len++] = 'x';
str[len] = '\0';
return len;
}
void search(char keyT[5][5], char a, char b, int arr[]) {if
(a == 'j') a = 'i';
if (b == 'j') b = 'i';
for (int i = 0; i < 5; i++)
for (int j = 0; j < 5; j++) {
if (keyT[i][j] == a) arr[0] = i, arr[1] = j;
if (keyT[i][j] == b) arr[2] = i, arr[3] = j;
}
}
void encrypt(char str[], char keyT[5][5], int len) {int
pos[4];
for (int i = 0; i < len; i += 2) {
search(keyT, str[i], str[i + 1], pos);if
(pos[0] == pos[2]) {
str[i] = keyT[pos[0]][(pos[1] + 1) % 5];
str[i + 1] = keyT[pos[0]][(pos[3] + 1) % 5];
}
else if (pos[1] == pos[3]) {
str[i] = keyT[(pos[0] + 1) % 5][pos[1]];
str[i + 1] = keyT[(pos[2] + 1) % 5][pos[1]];
}
else {
str[i] = keyT[pos[0]][pos[3]];
str[i + 1] = keyT[pos[2]][pos[1]];
}
}
}
void PlayfairCrypt(char str[], char key[]) {
char keyT[5][5];
int ks = strlen(key);
int ps = strlen(str); ps
= prepare(str, ps);
generateKeyTable(key, ks, keyT);
encrypt(str, keyT, ps);

CNS lab 4
printf("\nCipher text: %s\n", str);
}
void main() {
char str[SIZE], key[SIZE];
printf("Enter the key: ");
scanf("%s", key); printf("Enter
the plaintext: ");scanf("%s",
str); PlayfairCrypt(str, key);
}

CNS lab 5
3) Hill cipher
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void encryption(int msg[100][100], int key[3][3], int cipher_mat[100][100], intlen1,
int order);
void decryption(int cipher_mat[100][100], int key[3][3], int len1, int order);void
main() {
char message[100];
int key[3][3], msg[100][100] = {0}, cipher_mat[100][100] = {0}, order, len,len1,
count = 0;
printf("Enter the message:\n");
gets(message);
printf("Enter the order of the key:\t");
scanf("%d", &order);
printf("Enter the key:\n"); for
(int i = 0; i < order; i++)
for (int j = 0; j < order; j++)
scanf("%d", &key[i][j]);
len = strlen(message);
len1 = (len + order - 1) / order;
for (int i = 0; i < len1; i++)
for (int j = 0; j < order; j++)
msg[i][j] = (count < len) ? (message[count++] - 'a') : ('x' - 'a');
printf("Encryption is:");
encryption(msg, key, cipher_mat, len1, order);
decryption(cipher_mat, key, len1, order);
}
void encryption(int msg[100][100], int key[3][3], int cipher_mat[100][100], intlen1,
int order) {
char encrypt[100];
int u = 0;
for (int i = 0; i < len1; i++)
for (int j = 0; j < order; j++) { for
(int k = 0; k < order; k++)
cipher_mat[i][j] += msg[i][k] * key[k][j];
cipher_mat[i][j] %= 26;
encrypt[u++] = cipher_mat[i][j] + 'a';
printf("%c", encrypt[u - 1]);
}
encrypt[u] = '\0';
}

CNS lab 6
void decryption(int cipher_mat[100][100], int key[3][3], int len1, int order)
{
int det, inv_det, adj[3][3], inv[3][3], decrypt_mat[100][100] = {0};
char decrypt[100];
int u = 0;
det = key[0][0] * key[1][1] - key[0][1] * key[1][0];
printf("\nDeterminant is : %d", det);
if (det < 0) det = 26 - (-det % 26);
for (inv_det = 1; (det * inv_det) % 26 != 1; inv_det++);
printf("\nInverse of determinant is : %d\n", inv_det);
adj[0][0] = key[1][1];
adj[0][1] = -key[0][1];
adj[1][0] = -key[1][0];
adj[1][1] = key[0][0];
for (int i = 0; i < order; i++)
for (int j = 0; j < order; j++) {
inv[i][j] = (adj[i][j] * inv_det) % 26;
if (inv[i][j] < 0) inv[i][j] += 26;
}
printf("adjoint of 2x2\n");
for (int i = 0; i < order; i++) {
for (int j = 0; j < order; j++) printf("%d\t", adj[i][j]);
printf("\n");
}
printf("Inverse Key:\n");
for (int i = 0; i < order; i++) {
for (int j = 0; j < order; j++) printf("%d\t", inv[i][j]);
printf("\n");
}
for (int i = 0; i < len1; i++)
for (int j = 0; j < order; j++) { for
(int k = 0; k < order; k++)
decrypt_mat[i][j] += cipher_mat[i][k] * inv[k][j];
decrypt_mat[i][j] %= 26;
decrypt[u++] = decrypt_mat[i][j] + 'a';
printf("%c", decrypt[u - 1]);

7
CNS lab
4) Rail fence

#include<stdio.h>
#include<string.h>
void main()
{
int i, j, len, rails, count, direction, row;
char str[1000], code[100][1000] = {0};
printf("Enter the secret msg: "); fgets(str,
sizeof(str), stdin); str[strcspn(str, "\n")] =
0;
len = strlen(str);
printf("Enter the number of rails: ");
scanf("%d", &rails);
count = 0;
row = 0;
direction = 1;
for (j = 0; j < len; j++) {
code[row][j] = str[j];
row += direction;
if (row == 0 || row == rails - 1) {
direction *= -1;
}
}
printf("Cipher: ");
for (i = 0; i < rails; i++) {
for (j = 0; j < len; j++) {
if (code[i][j] != 0) {
printf("%c", code[i][j]);
}
}
}
printf("\n");
}

8
CNS lab
5)Miller Robin

#include<stdio.h>
#include<string.h>
#include <stdlib.h>
long long int modulo(int base, int pw, int mod) {
long long int i,a=1;
for(i=0;i<pw;i++)
a=a*base;
return a%mod;
}
int Miller(int p) {
long long int c=0,m,b,temp,a=2,k=0;if
(p < 2) {
return 0;
}
if ((p != 2) && (p % 2 == 0)) {
return 0;
}
m = p - 1;
while ((m % 2) == 0) {m
/= 2;
k++;
}
b=modulo(a,m,p);
if(b==1)
return 1;
while(b!=1&&b!=p-1&&k>0){
b=modulo(b,2,p);
if(b==0)
return 0;
k--;
}

9
CNS lab
if(b==p-1)
return 1;
else
return 0;
}
int main()
{
int num; printf("Enter integer to test
primality:");
scanf("%d", & num);
if (Miller(num))
printf("\n%d is prime\n", num);
else
printf("\n%d is not prime\n", num);
return 0;
}

10
CNS lab
11
CNS lab
12
CNS lab
13
CNS lab
14
CNS lab

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