· 7 years ago · Oct 22, 2018, 03:42 AM
1//Caesar Cipher
2import java.util.Scanner;
3
4public class caesarcipher {
5 public static void main(String args[]){
6 Scanner sc=new Scanner(System.in);
7 System.out.println("Enter the String");
8 String pt=sc.nextLine();
9 System.out.println("Enter the key");
10 int k=sc.nextInt();
11 String sb="";
12 String pt1="";
13 char a1='a';
14 int j=0;
15 int val=0;
16 String pt2=pt.toUpperCase();
17 for(int i=0;i<pt2.length();i++){
18 int pos=pt2.charAt(i)-65;
19 if(pos==-33) {
20 val = 32;
21 a1=(char)val;
22
23 }else {
24
25 j = (((pos + k) % 26)+26)%26;
26
27 val = j + 65;
28
29 a1 = (char) val;
30
31
32 }
33 sb += Character.toString(a1);
34 }
35 System.out.println(sb);
36 for(int i=0;i<sb.length();i++){
37 int pos=sb.charAt(i)-65;
38 if(pos==-33){
39 val=32;
40 a1=(char)val;
41 }else {
42 j = (((pos - k) % 26)+26)%26;
43 val = j + 65;
44 a1 = (char) val;
45 }
46 pt1+=Character.toString(a1);
47 }
48 System.out.println(pt1);
49 }
50}
51//DES Cipher
52import javax.swing.*;
53import java.security.SecureRandom;
54import javax.crypto.Cipher;
55import javax.crypto.KeyGenerator;
56import javax.crypto.SecretKey;
57import javax.crypto.spec.SecretKeySpec;
58import java.util.Random ;
59import java.util.Scanner;
60public class DES1 {
61 byte[] skey = new byte[1000];
62 String skeyString;
63 static byte[] raw;
64
65 String inputMessage,encryptedData,decryptedMessage;
66 public DES1() {
67 try {
68 generateSymmetricKey();
69 Scanner sc=new Scanner(System.in);
70 System.out.println("Enter message to encrypt");
71 inputMessage=sc.next();
72 byte[] ibyte = inputMessage.getBytes();
73 byte[] ebyte=encrypt(raw, ibyte);
74 String encryptedData = new String(ebyte);
75 System.out.println("Encrypted message "+encryptedData);
76 byte[] dbyte= decrypt(raw,ebyte);
77 String decryptedMessage = new String(dbyte);
78 System.out.println("Decrypted message "+decryptedMessage);
79 }
80 catch(Exception e) {
81 System.out.println(e);
82 }
83 }
84 void generateSymmetricKey() {
85 try {
86 Random r = new Random();
87 int num = r.nextInt(10000);
88 String knum = String.valueOf(num);
89 byte[] knumb = knum.getBytes();
90 skey=getRawKey(knumb);
91 skeyString = new String(skey);
92 }
93 catch(Exception e) {
94 System.out.println(e);
95 }
96 }
97 private static byte[] getRawKey(byte[] seed) throws Exception {
98 KeyGenerator kgen = KeyGenerator.getInstance("DES");
99 SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
100 sr.setSeed(seed);
101 kgen.init(56, sr);
102 SecretKey skey = kgen.generateKey();
103 raw = skey.getEncoded();
104 return raw;
105 }
106 private static byte[] encrypt(byte[] raw, byte[] clear) throws Exception {
107 SecretKeySpec skeySpec = new SecretKeySpec(raw, "DES");
108 Cipher cipher = Cipher.getInstance("DES");
109 cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
110 byte[] encrypted = cipher.doFinal(clear);
111 return encrypted;
112 }
113 private static byte[] decrypt(byte[] raw, byte[] encrypted) throws Exception {
114 SecretKeySpec skeySpec = new SecretKeySpec(raw, "DES");
115 Cipher cipher = Cipher.getInstance("DES");
116
117 cipher.init(Cipher.DECRYPT_MODE, skeySpec);
118 byte[] decrypted = cipher.doFinal(encrypted);
119 return decrypted;
120 }
121 public static void main(String args[]) {
122 DES1 des = new DES1();
123 }
124}
125//Diffie
126import java.util.*;
127class diffieHellmanAlg
128{
129 public static void main (String[] args) throws java.lang.Exception
130 {
131 int p = 11;
132 int g = 2;
133 int x = 9;
134
135 int y = 4;
136 double aliceSends = (Math.pow(g,x))%p;
137 double bobComputes = (Math.pow(aliceSends,y))%p;
138 double bobSends = (Math.pow(g,y))%p;
139 double aliceComputes = (Math.pow(bobSends,x))%p;
140 double sharedSecret = (Math.pow(g,(x*y)))%p;
141 System.out.println("simulation of Diffie-Hellman key exchange algorithm");
142 System.out.println("aliceSends : " + aliceSends);
143 System.out.println("bobComputes : " + bobComputes);
144 System.out.println("bobSends : " + bobSends);
145 System.out.println("aliceComputes : " + aliceComputes);
146 System.out.println("sharedSecret : " + sharedSecret);
147
148 if ((aliceComputes == sharedSecret) && (aliceComputes == bobComputes))
149 System.out.println("success: shared secrets matches! " + sharedSecret);
150 else
151 System.out.println("error: shared secrets does not match");
152 }
153}
154//DSS
155import java.util.*;
156import java.math.BigInteger;
157class dss
158{
159 final static BigInteger one = new BigInteger("1");
160 final static BigInteger zero = new BigInteger("0");
161 public static BigInteger getNextPrime(String ans)
162 {
163 BigInteger test = new BigInteger(ans); while (!test.isProbablePrime(99))
164 {
165 test = test.add(one);
166 }
167 return test;
168 }
169 public static BigInteger findQ(BigInteger n)
170 {
171 BigInteger start = new BigInteger("2");
172 while (!n.isProbablePrime(99))
173 {
174 while (!((n.mod(start)).equals(zero)))
175 {
176 start = start.add(one);
177 }
178 n = n.divide(start);
179 }
180 return n;
181 }
182 public static BigInteger getGen(BigInteger p, BigInteger q,Random r)
183 {
184
185 BigInteger h = new BigInteger(p.bitLength(), r);
186 h = h.mod(p);
187 return h.modPow((p.subtract(one)).divide(q), p);
188 }
189 public static void main (String[] args) throws java.lang.Exception
190 {
191 Random randObj = new Random();
192 BigInteger p = getNextPrime("10600");
193 BigInteger q = findQ(p.subtract(one));
194 BigInteger g = getGen(p,q,randObj);
195 System.out.println("global public key components are:");
196 System.out.println("p is: " + p);
197 System.out.println("q is: " + q);
198 System.out.println("g is: " + g);
199 BigInteger x = new BigInteger(q.bitLength(), randObj); x = x.mod(q);
200 BigInteger y = g.modPow(x,p);
201 BigInteger k = new BigInteger(q.bitLength(), randObj); k = k.mod(q);
202 BigInteger r = (g.modPow(k,p)).mod(q);
203 BigInteger hashVal = new BigInteger(p.bitLength(), randObj);
204 BigInteger kInv = k.modInverse(q);
205 BigInteger s = kInv.multiply(hashVal.add(x.multiply(r)));
206 s = s.mod(q);
207 System.out.println("secret information are:");
208 System.out.println("x (private) is: " + x);
209 System.out.println("k (secret) is: " + k);
210 System.out.println("y (public) is: " + y);
211 System.out.println("h (rndhash) is: " + hashVal);
212 System.out.println("generating digital signature:");
213 System.out.println("r is : " + r);
214 System.out.println("s is : " + s);
215 BigInteger w = s.modInverse(q);
216 BigInteger u1 = (hashVal.multiply(w)).mod(q);
217 BigInteger u2 = (r.multiply(w)).mod(q);
218 BigInteger v = (g.modPow(u1,p)).multiply(y.modPow(u2,p));
219 v = (v.mod(p)).mod(q);
220 System.out.println("verifying digital signature (checkpoints):");
221 System.out.println("w is : " + w);
222 System.out.println("u1 is : " + u1);
223 System.out.println("u2 is : " + u2);
224 System.out.println("v is : " + v);
225 if (v.equals(r))
226 {
227
228 System.out.println("success: digital signature is verified! " + r);
229 }
230 else
231 {
232 System.out.println("error: incorrect digital signature");
233 }
234 }
235}
236//Hill Cipher
237import java.util.*;
238class hillCipher
239{
240 /* 3x3 key matrix for 3 characters at once */ public static int[][] keymat = new int[][]
241 { { 1, 2, 1 }, { 2, 3, 2 }, { 2, 2, 1 } };
242 /* key inverse matrix */
243 public static int[][] invkeymat = new int[][]
244 { { -1, 0, 1 }, { 2, -1, 0 }, { -2, 2, -1 } };
245 public static String key = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; private static String encode(char a, char b, char c)
246{
247 String ret = ""; int x,y, z;
248 int posa = (int)a - 65;
249 int posb = (int)b - 65; int posc = (int)c - 65;
250 x = posa * keymat[0][0] + posb * keymat[1][0] + posc * keymat[2][0]; y = posa * keymat[0][1] + posb * keymat[1][1] + posc * keymat[2][1]; z = posa * keymat[0][2] + posb * keymat[1][2] + posc * keymat[2][2]; a = key.charAt(x%26);
251 b = key.charAt(y%26); c = key.charAt(z%26); ret = "" + a + b + c; return ret;
252}
253
254 private static String decode(char a, char b, char c)
255 {
256 String ret = ""; int x,y,z;
257 int posa = (int)a - 65; int posb = (int)b - 65; int posc = (int)c - 65;
258 x = posa * invkeymat[0][0]+ posb * invkeymat[1][0] + posc * invkeymat[2][0]; y = posa * invkeymat[0][1]+ posb * invkeymat[1][1] + posc * invkeymat[2][1]; z = posa * invkeymat[0][2]+ posb * invkeymat[1][2] + posc * invkeymat[2][2]; a = key.charAt((x%26<0) ? (26+x%26) : (x%26));
259 b = key.charAt((y%26<0) ? (26+y%26) : (y%26)); c = key.charAt((z%26<0) ? (26+z%26) : (z%26)); ret = "" + a + b + c;
260 return ret;
261 }
262 public static void main (String[] args) throws java.lang.Exception
263 {
264 String msg; String enc = ""; String dec = ""; int n;
265 msg = ("SecurityLaboratory"); System.out.println("simulation of Hill Cipher"); System.out.println("input message : " + msg); msg = msg.toUpperCase();
266 msg = msg.replaceAll("\\s", ""); /* remove spaces */ n = msg.length() % 3;
267/* append padding text X */ if (n != 0)
268 {
269 for(int i = 1; i<= (3-n);i++)
270 {msg+= 'X';
271 }}
272 System.out.println("padded message : " + msg);
273 char[] pdchars = msg.toCharArray(); for (int i=0; i < msg.length(); i+=3)
274 {
275 enc += encode(pdchars[i], pdchars[i+1], pdchars[i+2]);
276 }
277 System.out.println("encoded message : " + enc); char[] dechars = enc.toCharArray();
278 for (int i=0; i< enc.length(); i+=3)
279 {
280 dec += decode(dechars[i], dechars[i+1], dechars[i+2]);
281 }
282 System.out.println("decoded message : " + dec);} }
283//MD5
284import java.math.BigInteger;
285import java.security.MessageDigest;
286import java.security.NoSuchAlgorithmException;
287import java.util.Scanner;
288public class md55 {
289 public static String getMd5(String input)
290 {
291 try {
292 MessageDigest md = MessageDigest.getInstance("MD5");
293 byte[] messageDigest = md.digest(input.getBytes());
294 BigInteger no = new BigInteger(1, messageDigest);
295 String hashtext = no.toString(16);
296 while (hashtext.length() < 32) {
297 hashtext = "0" + hashtext;
298 }
299 return hashtext;
300 }
301 catch (NoSuchAlgorithmException e) {
302 throw new RuntimeException(e);
303 }
304 }
305 public static void main(String args[]) throws NoSuchAlgorithmException
306 {
307 String s ="";
308 System.out.println("enter your string");
309 Scanner sc=new Scanner(System.in);
310 s=sc.next();
311 System.out.println("Your HashCode Generated by MD5 is: " + getMd5(s));
312 }
313}
314//Playfair
315import java.util.ArrayList;
316import java.util.Scanner;
317public class playfair
318{
319 public static void main(String[] args)
320 {
321 try{
322 Scanner sc = new Scanner(System.in);
323 System.out.println("Enter the word ");
324 char m1[][] = new char[5][5];
325 char m2[][] = new char[5][5];
326 ArrayList<Character> al = new ArrayList();
327
328 String g = sc.next().toLowerCase();
329 g = g.replace('j', 'i');
330 if(g.length()%2!=0)
331 {
332 g+="x";
333 }
334 for(int i=0;i<g.length();i++)
335 {
336 al.add(g.charAt(i));
337 }
338 System.out.println("Enter the key");
339 String q = sc.next().toLowerCase();
340 String aa="";
341 int qq;
342 for(int i=97;i<123;i++)
343 {
344 if(i==106)
345 continue;
346 qq=0;
347 for(int j=0;j<q.length();j++)
348 {
349 if((char)i==q.charAt(j))
350 {
351 qq=1;
352 }
353 }
354 if(qq==0)
355 {
356 aa+=((char)i);
357 }
358 }
359 q+=aa;
360 m1=matrix(q);
361 q=new StringBuffer(q).reverse().toString();
362 m2=matrix(q);
363 int b[] = new int[4];
364 for(int c=0;c<al.size();c+=2)
365 {
366 if(al.get(c)==al.get(c+1))
367 {
368 al.add(c+1, 'x');
369 }
370 for(int i=0;i<m1.length;i++)
371 {
372 for(int j=0;j<m1[i].length;j++)
373 {
374 if(m1[i][j]==(al.get(c)))
375 {
376 b[0]=i;
377 b[1]=j;
378 }
379 }
380 }
381 for(int i=0;i<m1.length;i++)
382 {
383 for(int j=0;j<m1[i].length;j++)
384 {
385 if(m1[i][j]==(al.get(c+1)))
386 {
387 b[2]=i;
388 b[3]=j;
389 }
390 }
391 }
392 if(b[1]==b[3])
393 {
394 if(b[0]<=b[2])
395 {
396 code(1,b,m1,1);
397 }
398 else
399 {
400 b=change(b);
401 code(1,b,m2,0);
402 }
403 }
404 else if(b[0]==b[2])
405 {
406 if(b[1]<=b[3])
407 {
408 code(2,b,m1,1);
409 }
410 else
411 {
412 b=change(b);
413 code(2,b,m2,1);
414 }
415 }
416 else
417 {
418 System.out.print(m1[b[0]][b[3]]+""+m1[b[2]][b[1]]);
419 }
420 }
421 }catch(Exception e){}
422 }
423 public static void code(int q,int[] b,char[][] m1,int i)
424 {
425 if(q==1)
426 {
427 System.out.print(m1[((b[0]%4)+1)][b[3]]+""+m1[((b[2]%4))+i][b[1]]);
428 }
429 if(q==2)
430 {
431 int j=1;
432 if(b[3]==4)
433 {
434 j=0;
435 }
436 System.out.print(m1[b[2]][(b[1]%4)+i]+""+m1[b[0]][(b[3]%4)+j]);
437 }
438 }
439 public static int[] change(int[] b)
440 {
441 for(int i=0;i<b.length;i++)
442 {
443 switch (b[i])
444 {
445 case 0: b[i]=4; break;
446 case 1: b[i]=3; break;
447 case 3: b[i]=1; break;
448 case 4: b[i]=0; break;
449 }
450 }
451 return b;
452 }
453 public static char[][] matrix(String q)
454 {
455 char mm[][] = new char[5][5];
456 for(int s=0,ss=0;s<5;s++)
457 {
458 for(int t=0;t<5;t++,ss++)
459 {
460 mm[s][t]=q.charAt(ss);
461 System.out.print(mm[s][t]);
462 }
463 System.out.println();
464 }
465 System.out.println();
466 return mm;
467 }
468}
469//Primitive Root
470import java.util.ArrayList;
471import java.util.Scanner;
472import java.util.TreeSet;
473
474public class Diffie {
475 public static void main(String[] args) {
476 Scanner sc=new Scanner(System.in);
477 int xa,xb,ya,yb,p,ppr,k1,k2;
478 System.out.println("Enter A's Private Key");
479 xa=sc.nextInt();
480 System.out.println("Enter B's Private key");
481 xb=sc.nextInt();
482 System.out.println("Enter a prime Number");
483 p=sc.nextInt();
484 ArrayList<Integer> al = new ArrayList <Integer>();
485 int a[] = new int[p-1];
486 for(int i = p-2;i>=0;i--){
487 int k = i+1;
488 for(int j = 1;j<=p-1;j++){
489 int x = (int)(Math.pow(k,j))%p;
490
491 al.add(x);
492 }
493
494 }
495
496 int k =0;
497 ArrayList <Integer> pr = new ArrayList<Integer>();
498 int pows[][] = new int[p-1][p-1];
499 for(int i=0;i<p-1;i++){
500 for( int j=0;j<p-1;j++){
501 pows[i][j] = al.get(k++);
502 }
503 }
504 TreeSet<Integer> hl = new TreeSet<Integer>();
505 for(int i=0;i<10;i++){
506
507
508 int q = pows[i][0];
509 for( int j=0;j<p-1;j++){
510 hl.add(pows[i][j]);
511
512
513 }
514 if(hl.size()==p-1)
515 pr.add(q);
516 hl.clear();
517
518 } // System.out.print(pr.get(0));
519
520
521 //System.out.println("Enter a Primitive Root of a prime number");
522 ppr=pr.get(0);
523 ya= (int)Math.pow(ppr,xa)%p;
524 yb=(int)Math.pow(ppr,xb)%p;
525 k1=(int)Math.pow(ya,xb)%p;
526 k2=(int)Math.pow(yb,xa)%p;
527 System.out.println(k1);
528 System.out.println(k2);
529 if(k1==k2){
530 System.out.println("Success");
531 }
532 else
533 System.out.println("Check");
534
535 }
536 }
537//Railfence
538import java.util.Scanner;
539public class railfence {
540 public static void main(String[] args) {
541 // TODO code application logic here
542 Scanner sc=new Scanner(System.in);
543 String s1="";
544 String s2="";
545 System.out.println("Enter the PlainText");
546 String pt=sc.nextLine();
547 char[] ch=pt.toCharArray();
548 for(int i=0;i<pt.length();i++){
549 if(i%2==0)
550 s1+=Character.toString(ch[i]);
551 else
552 s2+=Character.toString(ch[i]); }
553 System.out.println("Encrypted Text:" +s1+s2);
554 System.out.print("Decrypted Text:");
555 if(pt.length()%2==0){
556 for(int i=0;i<(pt.length()/2);i++){
557 System.out.print(s1.charAt(i));
558 System.out.print(s2.charAt(i));
559 } }
560
561
562 else
563 {
564 for(int i=0;i<(pt.length()/2)+1;i++){
565 System.out.print(s1.charAt(i));
566 if(i==(pt.length()/2))
567 break;
568 System.out.print(s2.charAt(i));
569 }
570 }
571 }
572}
573//RSA
574import java.util.Scanner;
575public class rsa {
576 public static void main(String args[])
577 {
578 Scanner sc=new Scanner(System.in);
579 int p,q,n,z,d=0,e,i;
580 System.out.println("Enter the number to be encrypted and decrypted");
581 int msg=sc.nextInt();
582
583 double c,msgback;
584 System.out.println("Enter 1st prime number p");
585 p=sc.nextInt();
586 System.out.println("Enter 2nd prime number q");
587 q=sc.nextInt();
588
589 n=p*q;
590 z=(p-1)*(q-1);
591 System.out.println("the value of z = "+z);
592 for(e=2;e<z;e++)
593 {
594 if(gcd(e,z)==1)
595 {
596 break;
597 }
598 }
599 System.out.println("the value of e = "+e);
600 for(i=1;;i++){
601 if((e*i)%z==1){
602 d=i;
603 break;
604 }
605 }
606 System.out.println("the value of d = "+d);
607 c=(Math.pow(msg,e))%n;
608 System.out.println("Encrypted message is : -");
609 System.out.println(c);
610 msgback=(Math.pow(c,d))%n;
611 System.out.println("Derypted message is : -");
612 System.out.println(msgback);
613 }
614 static int gcd(int e, int z)
615 {
616 if(e==0)
617 return z;
618 else
619
620 return gcd(z%e,e);
621 }
622}
623//SHA1
624import java.security.*;
625public class SHA1 {
626 public static void main(String[] a) {
627 try
628 {
629 MessageDigest md = MessageDigest.getInstance("SHA1");
630 System.out.println("Message digest object info: ");
631 System.out.println(" Algorithm = " +md.getAlgorithm());
632 System.out.println(" Provider = " +md.getProvider());
633 System.out.println(" ToString = " +md.toString());
634 String input = ""; md.update(input.getBytes()); byte[] output = md.digest();
635 System.out.println();
636 System.out.println("SHA1(\""+input+"\") = " +bytesToHex(output));
637 input = "abc"; md.update(input.getBytes()); output = md.digest(); System.out.println();
638 System.out.println("SHA1(\" "+input+"\") = " +bytesToHex(output));
639 input = "abcdefghijklmnopqrstuvwxyz"; md.update(input.getBytes());
640 output = md.digest();
641 System.out.println();
642 System.out.println("SHA1(\"" +input+"\") = " +bytesToHex(output)); System.out.println("");
643 }
644 catch (Exception e)
645 {
646 System.out.println("Exception: " +e);
647 }
648 }
649 public static String bytesToHex(byte[] b)
650 {
651 char hexDigit[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
652 StringBuffer buf = new StringBuffer();
653 for (int j=0; j<b.length; j++) {
654 buf.append(hexDigit[(b[j] >> 4) & 0x0f]);
655 buf.append(hexDigit[b[j] & 0x0f]);
656 }
657 return buf.toString();
658 }
659
660}
661//Vignere
662import java.util.ArrayList;
663import java.util.Scanner;
664public class vignere {
665 public static void main(String[] args) {
666 Scanner sc=new Scanner(System.in);
667 char al[]={'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'};
668 int k=0,p=0;
669 String res="",res1="";
670 System.out.println("enter the key");
671 String key=sc.nextLine();
672 System.out.println("enter the plain text");
673 StringBuilder msg=new StringBuilder(sc.next());
674 char arr[]=key.toCharArray();
675 int n=arr.length;
676 ArrayList<Character> keyarr=new ArrayList<Character>();
677 if((msg.length()+1)%2==0) {
678 for(int i=0;i<msg.length();i++) {
679 keyarr.add(arr[i%n]);
680 }
681 }else {
682 msg.append('x');
683 for(int i=0;i<msg.length();i++) {
684 keyarr.add(arr[i%n]); } }
685
686 for(int i=0;i<msg.length();i++) {
687 char c=msg.charAt(i);
688 char c1=keyarr.get(i);
689 for(int j=0;j<al.length;j++) {
690 if(c==al[j]) {
691 p=j;
692 }
693 if(c1==al[j]) {
694 k=j;
695 }
696 }
697 int num=(k+p)%26;
698 res+=al[num];
699 }
700 System.out.println("Encrypted text= "+res);
701 for(int i=0;i<res.length();i++) {
702 char c=res.charAt(i);
703 char c1=keyarr.get(i);
704 for(int j=0;j<al.length;j++) {
705 if(c==al[j]) {
706 p=j;
707 }
708 if(c1==al[j]) {
709 k=j;
710 }
711 }
712 int num=Math.abs((k-p))%26;
713 res1+=al[num];
714 }
715 System.out.println("Decrypted Text= "+res1);
716 }
717}