Program RSA Program Sieve of Eratosthenes

2. Program RSA

package com.januar.tppchat.crypto; import java.math.BigInteger; import java.util.Random; public class RSA { public static long getPublicKey long totien{ Random random = new Random; long e = 100 + long random.nextDoubletotien - 100 ; while GeneralMath.GCDtotien, e = 1 { e = 100 + long random.nextDoubletotien - 100 ; } return e; } public static long getPrivateKey long totien, long e{ return GeneralMath.ExtendedEuclideantotien, e; } public static long Encrypt long m, long e, long n{ return GeneralMath.ModularExponentialm, e, n; BigInteger b_m = new BigIntegerLong.toStringm; BigInteger b_e = new BigIntegerLong.toStringe; BigInteger b_n = new BigIntegerLong.toStringn; BigInteger result = b_m.modPowb_e,b_n; return Long.parseLongresult.toString; } public static long Decrypt long c, long d, long n{ return GeneralMath.ModularExponentialc, d, n; BigInteger b_c = new BigIntegerLong.toStringc; BigInteger b_d = new BigIntegerLong.toStringd; BigInteger b_n = new BigIntegerLong.toStringn; BigInteger result = b_c.modPowb_d,b_n; return Long.parseLongresult.toString; } }

3. Program Sieve of Eratosthenes

package com.januar.tppchat.crypto; import java.util.ArrayList; import java.util.List; import java.util.Random; public class SieveofEratosthenes { public static final int MAX = 99999999 ; public static ListInteger generate int min, int limit { int limit = 99999999; Batas maksimum bil. prima yang dicari boolean [] bil_asal = new boolean [limit]; for int i = ; i limit; i++ { bil_asal[i] = true ; } bil_asal[ ] = false ; bilangan 0 bukan bilangan prima bil_asal[ 1 ] = false ; bilangan 1 bukan bilangan prima Penerapan algoritma Sieve of Erathosthenes for int i = 2 ; i = Math.sqrtlimit; i++ { if bil_asal[i] { for int j = i i; j limit; j = j + i { bil_asal[j] = false ; } } } Masukkan semua bilangan prima hasil pencarian ke dalam array prima ListInteger prima = new ArrayListInteger; for int i = 2 ; i limit; i++ { if bil_asal[i] i = min { prima.addi; } } System. out .println Jumlah bilangan prima antara + min + sampai + limit + adalah + prima.size + buah ; return prima; } public static ListInteger generate { return SieveofEratosthenes.generate 2 , MAX ; } public static ListInteger generate int limit { return SieveofEratosthenes.generate 2 , limit; } public static ListInteger generateKey { ListInteger keys = new ArrayListInteger; ListInteger prima = SieveofEratosthenes.generate 100 , 10000 ; Random random = new Random; int q = ; int temp = random.nextIntprima.size; keys.addprima.gettemp; do { temp = random.nextIntprima.size; q = prima.gettemp; } while keys.get == q; keys.addq; return keys; } public static ListInteger generateRabinKey { ListInteger keys = new ArrayListInteger; ListInteger prima = SieveofEratosthenes.generate 100000 , 1000000 ; Random random = new Random; while keys.size = 2 { int temp = random.nextIntprima.size; if prima.gettemp 4 == 3 { if keys.containsprima.gettemp { keys.addprima.gettemp; } } } return keys; } }

4. Program Three-Pass Protocol