All in One
Aishu
plain_text
2 years ago
18 kB
1
Indexable
Never
//Practical 1 #include<iostream> #include<string.h> using namespace std; int main() { cout<<"Enter the message:\n"; char msg[100]; cin.getline(msg,100); //take the message as input int i, j, length,choice,key; cout << "Enter key: "; cin >> key; //take the key as input length = strlen(msg); cout<<"Enter your choice \n1. Encryption \n2. Decryption \n"; cin>>choice; if (choice==1) //for encryption{ char ch; for(int i = 0; msg[i] != '\0'; ++i) { ch = msg[i]; //encrypt for lowercase letter If (ch >= 'a' && ch <= 'z'){ ch = ch + key; if (ch > 'z') { ch = ch - 'z' + 'a' - 1; } msg[i] = ch; } //encrypt for uppercase letter 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); } else if (choice == 2) { //for decryption char ch; for(int i = 0; msg[i] != '\0'; ++i) { ch = msg[i]; //decrypt for lowercase letter if(ch >= 'a' && ch <= 'z') { ch = ch - key; if(ch < 'a'){ ch = ch + 'z' - 'a' + 1; } msg[i] = ch; } //decrypt for uppercase letter else if(ch >= 'A' && ch <= 'Z') { ch = ch - key; if(ch < 'A') { ch = ch + 'Z' - 'A' + 1; } msg[i] = ch; } } cout << "Decrypted message: " << msg; } } //Practical 2 key=input("Enter key : ") key=key.replace(" ", "") key=key.upper() def matrix(x,y,initial): return [[initial for i in range(x)] for j in range(y)] result=list() for c in key: #storing key if c not in result: if c=='J': result.append('I') else: result.append(c) flag=0 for i in range(65,91): #storing other character if chr(i) not in result: if i==73 and chr(74) not in result: result.append("I") flag=1 elif flag==0 and i==73 or i==74: pass else: result.append(chr(i)) k=0 my_matrix=matrix(5,5,0) #initialize matrix for i in range(0,5): #making matrix for j in range(0,5): my_matrix[i][j]=result[k] k+=1 def locindex(c): #get location of each character loc=list() if c=='J': c='I' for i ,j in enumerate(my_matrix): for k,l in enumerate(j): if c==l: loc.append(i) loc.append(k) return loc def encrypt(): #Encryption msg=str(input("\nENTER MSG: ")) msg=msg.upper() msg=msg.replace(" ", "") i=0 for s in range(0,len(msg)+1,2): if s<len(msg)-1: if msg[s]==msg[s+1]: msg=msg[:s+1]+'X'+msg[s+1:] if len(msg)%2!=0: msg=msg[:]+'X' print("\nCIPHER TEXT:",end=' ') while i<len(msg): loc=list() loc=locindex(msg[i]) loc1=list() loc1=locindex(msg[i+1]) if loc[1]==loc1[1]: print("{}{}".format(my_matrix[(loc[0]+1)%5][loc[1]],my_matrix[(loc1[0]+1)%5][loc1[1]]),end=' ') elif loc[0]==loc1[0]: print("{}{}".format(my_matrix[loc[0]][(loc[1]+1)%5],my_matrix[loc1[0]][(loc1[1]+1)%5]),end=' ') else: print("{}{}".format(my_matrix[loc[0]][loc1[1]],my_matrix[loc1[0]][loc[1]]),end=' ') i=i+2 def decrypt(): #decryption msg=str(input("\nENTER CIPHER TEXT: ")) msg=msg.upper() msg=msg.replace(" ", "") print("\nPLAIN TEXT: ",end=' ') i=0 while i<len(msg): loc=list() loc=locindex(msg[i]) loc1=list() loc1=locindex(msg[i+1]) if loc[1]==loc1[1]: print("{}{}".format(my_matrix[(loc[0]-1)%5][loc[1]],my_matrix[(loc1[0]-1)%5][loc1[1]]),end=' ') elif loc[0]==loc1[0]: print("{}{}".format(my_matrix[loc[0]][(loc[1]-1)%5],my_matrix[loc1[0]][(loc1[1]-1)%5]),end=' ') else: print("{}{}".format(my_matrix[loc[0]][loc1[1]],my_matrix[loc1[0]][loc[1]]),end=' ') i=i+2 while(1): choice=int(input("\n 1.Encryption \n 2.Decryption: \n 3.EXIT\n")) if choice==1: encrypt() elif choice==2: decrypt() elif choice==3: exit() else: print("Choose correct choice: ") //Practical 3 #include<iostream> #include<string.h> using namespace std; void encryptMsg(char msg[], int key){ int msgLen = strlen(msg), i, j, k = -1, row = 0, col = 0; char railMatrix[key][msgLen]; for(i = 0; i < key; ++i) for(j = 0; j < msgLen; ++j) railMatrix[i][j] = '\n'; for(i = 0; i < msgLen; ++i){ railMatrix[row][col++] = msg[i]; if(row == 0 || row == key-1) k= k * (-1); row = row + k; } cout<<"\nEncrypted Message: "; for(i = 0; i < key; ++i) for(j = 0; j < msgLen; ++j) if(railMatrix[i][j] != '\n') cout<<railMatrix[i][j]; } void decryptMsg(char enMsg[], int key){ int msgLen = strlen(enMsg), i, j, k = -1, row = 0, col = 0, m = 0; char railMatrix[key][msgLen]; for(i = 0; i < key; ++i) for(j = 0; j < msgLen; ++j) railMatrix[i][j] = '\n'; for(i = 0; i < msgLen; ++i){ railMatrix[row][col++] = '*'; if(row == 0 || row == key-1) k= k * (-1); row = row + k; } for(i = 0; i < key; ++i) for(j = 0; j < msgLen; ++j) if(railMatrix[i][j] == '*') railMatrix[i][j] = enMsg[m++]; row = col = 0; k = -1; cout<<"\nDecrypted Message: "; for(i = 0; i < msgLen; ++i){ cout<<railMatrix[row][col++]; if(row == 0 || row == key-1) k= k * (-1); row = row + k; } } int main(){ char msg[] = "Hello World"; char enMsg[] = "Horel ollWd"; int key = 3; cout<<"Original Message: "<<msg; encryptMsg(msg, key); decryptMsg(enMsg, key); return 0; } //Practical 4: import java.util.*; import java.io.*; import java.lang.*; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String line = System.getProperty("line.separator"); scan.useDelimiter(line); System.out.print("1. Encryt 2.Decrypt : "); int option = scan.nextInt(); switch (option) { case 1: System.out.print("Enter String:"); String text = scan.next(); System.out.print("Enter Key:"); String key = scan.next(); System.out.println(encryptCT(key, text).toUpperCase()); break; case 2: System.out.print("Enter Encrypted String:"); text = scan.next(); System.out.print("Enter Key:"); key = scan.next(); System.out.println(decryptCT(key, text)); break; default: break; } } public static String encryptCT(String key, String text) { int[] arrange = arrangeKey(key); int lenkey = arrange.length; int lentext = text.length(); int row = (int) Math.ceil((double) lentext / lenkey); char[][] grid = new char[row][lenkey]; int z = 0; for (int x = 0; x < row; x++) { for (int y = 0; y < lenkey; y++) { if (lentext == z) { // at random alpha for trailing null grid grid[x][y] = RandomAlpha(); z--; } else { grid[x][y] = text.charAt(z); } z++; } } String enc = ""; for (int x = 0; x < lenkey; x++) { for (int y = 0; y < lenkey; y++) { if (x == arrange[y]) { for (int a = 0; a < row; a++) { enc = enc + grid[a][y]; } } } } return enc; } public static String decryptCT(String key, String text) { int[] arrange = arrangeKey(key); int lenkey = arrange.length; int lentext = text.length(); int row = (int) Math.ceil((double) lentext / lenkey); String regex = "(?<=\\G.{" + row + "})"; String[] get = text.split(regex); char[][] grid = new char[row][lenkey]; for (int x = 0; x < lenkey; x++) { for (int y = 0; y < lenkey; y++) { if (arrange[x] == y) { for (int z = 0; z < row; z++) { grid[z][y] = get[arrange[y]].charAt(z); } } } } String dec = ""; for (int x = 0; x < row; x++) { for (int y = 0; y < lenkey; y++) { dec = dec + grid[x][y]; } } return dec; } public static char RandomAlpha() { //generate random alpha for null space Random r = new Random(); return (char)(r.nextInt(26) + 'a'); } public static int[] arrangeKey(String key) { //arrange position of grid String[] keys = key.split(""); Arrays.sort(keys); int[] num = new int[key.length()]; for (int x = 0; x < keys.length; x++) { for (int y = 0; y < key.length(); y++) { if (keys[x].equals(key.charAt(y) + "")) { num[y] = x; break; } } } return num; } } //Practical 5: import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.print("Enter the plain text : "); String text = sc.nextLine(); String key = RandomAlpha(text.length()); String enc = OTPEncryption(text,key); System.out.println("\nPlaintext : "+text); System.out.println("\nKey : "+key); System.out.println("\nEncrypted : "+enc); System.out.println("\nDecrypted : "+OTPDecryption(enc,key)); } public static String RandomAlpha(int len){ Random r = new Random(); String key = ""; for(int x=0;x<len;x++) key = key + (char) (r.nextInt(26) + 'A'); return key; } public static String OTPEncryption(String text,String key){ String alphaU = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; String alphaL = "abcdefghijklmnopqrstuvwxyz"; int len = text.length(); String sb = ""; for(int x=0;x<len;x++){ char get = text.charAt(x); char keyget = key.charAt(x); if(Character.isUpperCase(get)){ int index = alphaU.indexOf(get); int keydex = alphaU.indexOf(Character.toUpperCase(keyget)); int total = (index + keydex) % 26; sb = sb+ alphaU.charAt(total); } else if(Character.isLowerCase(get)){ int index = alphaL.indexOf(get); int keydex = alphaU.indexOf(Character.toLowerCase(keyget)); int total = (index + keydex) % 26; sb = sb+ alphaL.charAt(total); } else{ sb = sb + get; } } return sb; } public static String OTPDecryption(String text,String key){ String alphaU = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; String alphaL = "abcdefghijklmnopqrstuvwxyz"; int len = text.length(); String sb = ""; for(int x=0;x<len;x++){ char get = text.charAt(x); char keyget = key.charAt(x); if(Character.isUpperCase(get)){ int index = alphaU.indexOf(get); int keydex = alphaU.indexOf(Character.toUpperCase(keyget)); int total = (index - keydex) % 26; total = (total<0)? total + 26 : total; sb = sb+ alphaU.charAt(total); } else if(Character.isLowerCase(get)){ int index = alphaL.indexOf(get); int keydex = alphaU.indexOf(Character.toLowerCase(keyget)); int total = (index - keydex) % 26; total = (total<0)? total + 26 : total; sb = sb+ alphaL.charAt(total); } else{ sb = sb + get; } } return sb; } } //Practical 6: #include <iostream> #include <tuple> // std::tuple, std::make_tuple, std::tie using namespace std; // Recursive function to demonstrate the extended Euclidean algorithm. // It returns multiple values using tuple in C++. tuple<int, int, int> extended_gcd(int a, int b) { if (a == 0) { return make_tuple(b, 0, 1); } int gcd, x, y; // unpack tuple returned by function into variables tie(gcd, x, y) = extended_gcd(b % a, a); return make_tuple(gcd, (y - (b/a) * x), x); } int main() { int a = 30; int b = 50; tuple<int, int, int> t = extended_gcd(a, b); int gcd = get<0>(t); int x = get<1>(t); int y = get<2>(t); cout << "The GCD is " << gcd << endl; cout << "x = " << x << " y = " << y << endl; cout << a << "*" << x << " + " << b << "*" << y << " = " << gcd << endl; return 0; } //Practical 7: #include <iostream> #include <math.h> using namespace std; int gcd(int a, int b) { int t; while (1) { t = a % b; if (t == 0) return b; a = b; b = t; } } int main() { double p, q, e, message, track; cout << "\n\t\t+-----------------+" << endl; cout << "\t\t| Practical No. 7 |"; cout << "\n\t\t+-----------------+" << endl; cout << " \n \t BY: Aishwarya Patle [A_07]" << endl; cout << "\nAIM : Write a program to develop a secure system" << endl; cout << "\tby applying RSA Cryptography Algorithm" << endl; cout << "\n Enter the first prime number (p): "; cin >> p; cout << "\n Enter the second prime number (q): "; cin >> q; double n = p * q; double phi = (p - 1) * (q - 1); cout << "\n Enter the value of e : "; cin >> e; while (e < phi) { track = gcd(e, phi); if (track == 1) break; else e++; } double d1 = 1 / e; double d = fmod(d1, phi); cout << "\n Enter the plaintext (M): "; cin >> message; double c = pow(message, e); double m = pow(c, d); c = fmod(c, n); m = fmod(m, n); cout << "\n\n\t\t+---------------+" << endl; cout << "\t\t| RSA Algorithm |"; cout << "\n\t\t+---------------+" << endl; cout << "\n\n The Original Message (M)is = " << message; cout << "\n\n The value of first prime number (p) = " << p; cout << "\n\n The value of second prime number (q) = " << q; cout << "\n\n The value of n = p*q = " << n; cout << "\n\n The value of phi = " << phi; cout << "\n\n The value of e = " << e; cout << "\n\n The value of d = " << d; cout << "\n\n The Encrypted message (C) = " << c; cout << "\n\n The Decrypted message (M) = " << m; return 0; } //Practical no.8 #include<iostream> #include<cstdio> #include<math.h> using namespace std; int UserA(int,int,int); int UserB(int,int,int); int main() { long int g, x, y, a, b, k1, k2, n; cout << "\n\t\t+-----------------+" << endl; cout << "\t\t| Practical No. 8 |"; cout << "\n\t\t+-----------------+" << endl; cout << " \t BY: Aishwarya Patle [A_07]" << endl; cout << "\n AIM : Write a program to implement Diffie-Hellman Key Exchange." <<endl; cout << "\n\t Enter the value of q (prime number) : "; cin >> g; cout << "\t Enter the value of α (primitive root of q) : "; cin >> n; cout << "\n\t Enter the value of private key XA (for User A) : "; cin >> x; cout << "\t Enter the value of private key XB (for User B) : "; cin >> y; a = UserA(n,g,x); cout << "\n\t The public key YA = α^(XA)*mod q : "<<a; b = UserB(n,g,y); cout << "\n\t The public key YB = α^(XB)*mod q : "<<b; k1 = UserA(n,b,x); cout << "\n\n\t Secret Key calculated by User A (K1) : "<<k1; k2 = UserB(n,a,y); cout << "\n\t Secret Key calculated by User B (K2) : "<<k2; return 0; } int UserA(int n,int g,int x) { long int a,a1; a1=pow(g,x); a=a1%n; return(a); } int UserB(int n,int g,int y) { long int b,b1,k2,t2; b1=pow(g,y); b=b1%n; return(b); }