public int hitungInvers(int[][] matrix) { int determinan, x, y, z; x = (matrix[0][0] * (matrix[1][1] * matrix[2][2] - matrix[1][2] * matrix[2][1])); y = (matrix[0][1] * (matrix[1][0] * matrix[2][2] - matrix[1][2] * matrix[2][0])); z = (matrix[0][2] * (matrix[1][0] * matrix[2][1] - matrix[1][1] * matrix[2][0])); determinan = x - y + z; System.out.println("================== MENGHITUNG INVERS PADA MATRIKS KUNCI ====================="); System.out.println("Determinan : " + determinan); if (determinan == 0) { System.out.println("Matrik tidak memiliki invers"); } else if (determinan < 0) { JOptionPane.showMessageDialog(null, "Kunci Tidak Memenuhi Syarat"); } else { int A = (matrix[1][1] * matrix[2][2] - matrix[2][1] * matrix[1][2]); int B = -(matrix[1][0] * matrix[2][2] - matrix[1][2] * matrix[2][0]); int C = (matrix[1][0] * matrix[2][1] - matrix[1][1] * matrix[2][0]); int D = -(matrix[0][1] * matrix[2][2] - matrix[2][1] * matrix[0][2]); int E = (matrix[0][0] * matrix[2][2] - matrix[0][2] * matrix[2][0]); int F = -(matrix[0][0] * matrix[2][1] - matrix[0][1] * matrix[2][0]); int G = (matrix[0][1] * matrix[1][2] - matrix[1][1] * matrix[0][2]); int H = -(matrix[0][0] * matrix[1][2] - matrix[0][2] * matrix[1][0]); int I = (matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0]); System.out.println(A); System.out.println(B); System.out.println(C); System.out.println(D); System.out.println(E); System.out.println(F); System.out.println(G); System.out.println(H); System.out.println(I); matrikInvers[0][0] = A; matrikInvers[0][1] = D; matrikInvers[0][2] = G; matrikInvers[1][0] = B; matrikInvers[1][1] = E; matrikInvers[1][2] = H; matrikInvers[2][0] = C; matrikInvers[2][1] = F; matrikInvers[2][2] = I; // mencari nilai multiplikative determinan, multiplikatif diperlukan agar hasil invers // tidak menjadi bilangan pecahan. BigInteger Multiplikatif = BigInteger.valueOf(determinan).modInverse(BigInteger.valueOf(modulo)); int MultiplikatifDet = Multiplikatif.intValue(); System.out.println("MultiPlikatif = " + MultiplikatifDet); for (int i = 0; i < matrikInvers.length; i++) { for (int j = 0; j < matrikInvers[i].length; j++) { if (matrikInvers[i][j] < 0) { matrikInvers[i][j] = modulo - (Math.abs(matrikInvers[i][j]) % modulo); } else { matrikInvers[i][j] = matrikInvers[i][j] % modulo; } matrikInvers[i][j] = (int) (matrikInvers[i][j] * MultiplikatifDet); matrikInvers[i][j] = matrikInvers[i][j] % modulo; // System.out.println(); } //System.out.println(""); } System.out.println("Matriks Invers = "); // menampilkan invers matrik for (int i = 0; i < matrikInvers.length; i++) { for (int j = 0; j ; matrikInvers[i].length; j++) { System.out.print(matrikInvers[i][j] + " "); } System.out.println(""); } } return determinan; }
Source Code Algoritma Hill Cipher Matriks Kunci 3x3
Ini source code hill cipher
Belum ada tanggapan untuk "Source Code Algoritma Hill Cipher Matriks Kunci 3x3"
Post a Comment