Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБА БОС 2.docx
Скачиваний:
9
Добавлен:
23.01.2021
Размер:
123.07 Кб
Скачать

Iterate.Java

import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import javax.swing.JTextArea;

public class Iterate {

public static int l = 0;

public static int Iterate(JTextArea ta1, int button) {

String hash = WritePass.ReadHash();

int n = 0;

try {

if (!new File("Словник/").exists() || !new File("Словник/" + "Словник" + ".txt").exists()) {

System.out.println("Error loading " + "Словник");

return 0;

}

FileReader fstream = new FileReader("Словник/" + "Словник" + ".txt");

BufferedReader in = new BufferedReader(fstream);

String line;

while ((line = in.readLine()) != null) {

if (line.equals("[end]"))

break;

if(button==2) {

String line1 = line;

String word1[] = Iterate.Asci(line1);

for(int m = 0; m < 1 << l; m++) {

String word33 = word1[m];

for(int i = 0; i<1000; i++) {

if(i>=100) {

word1[m] = i+word1[m];

} else if(i<10){

word1[m] = "00"+i+word1[m];

} else if(i<100){

word1[m] = "0"+i+word1[m];

}

String word = Hash.Hash(word1[m]);

System.out.println(word1[m]);

if (word.equals(hash)) {ta1.setText("Пароль: "+word1[m]+"\nХеш: "+word); n=1; return 1;}

word1[m]=word33;

}

}

}else if(button==1) {

String word1[] = Iterate.Asci(line);

for(int m = 0; m < 1 << l; m++) {

String word = Hash.Hash(word1[m]);

if (word.equals(hash)) {ta1.setText("Пароль: "+word1[m]+"\nХеш: "+word); n=1;}

}

}

}

} catch (Exception e) {

e.printStackTrace();

}

return n;

}

public static String[] Asci(String s) {

StringBuilder sb1=new StringBuilder();

StringBuilder sb2=new StringBuilder();

for(int i=0;i<s.length();i++)

{

char t=s.charAt(i);

if(t > 58) sb1.append((char)(t));

else sb2.append((char)(t));

}

String s1 = sb1.toString();

StringBuilder sb=new StringBuilder();

l = s1.length();

String[] word = new String[1<<l];

char[][] set = new char[2][];

set[0] = s1.toLowerCase().toCharArray();

set[1] = s1.toUpperCase().toCharArray();

for (int i = 0; i < 1 << l; i++) {

for (int j = 0; j < l; j++) {

sb.append((char)(set[(i >> j) % 2][j]));

System.out.print(set[(i >> j) % 2][j]);

}

word[i] = sb2.toString() + sb.toString();

sb.setLength(0);

System.out.println();

}

sb2.setLength(0);

sb1.setLength(0);

return word;

}

}

Main.java

import java.awt.*;

import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

import javax.swing.*;

public class Main {

static JTextArea ta1 = new JTextArea();

static JTextArea ta2 = new JTextArea();

public static void main(String[] args) {

Frame f = new Frame();

f.getContentPane().setLayout(null);

String mess = JOptionPane.showInputDialog("Введіть пароль:",". . .");

String h = Hash.Hash(mess);

WritePass.WritePass(mess,h);

Interface.Interfañe(f,h,ta1,ta2,mess);

f.setVisible(true);

}

}

class BgPanel extends JPanel{

public void paintComponent(Graphics g){

Image im = null;

try {

im = ImageIO.read(new File("Image/fon.jpg"));

} catch (IOException e) {}

g.drawImage(im, 0, 0, null);

}

}

WritePass.java

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import javax.swing.JTextArea;

public class WritePass {

public static void WritePass(String pass,String hash) {

try {

if (!new File("Парол³").exists())

new File("Парол³").mkdir();

new File("Парол³\\" + "Введений пароль" + ".txt").createNewFile();

FileWriter fstream = new FileWriter("Паролі\\" + " Введений пароль " + ".txt");

BufferedWriter out = new BufferedWriter(fstream);

out.write(pass + "_");

out.write(hash);

out.newLine();

out.write("[end]");

out.close();

}catch (Exception e) {

e.printStackTrace();

}

}

public static String ReadHash() {

String gg = null;

try {

if (!new File("Паролі/").exists() || !new File("Паролі/" + " Введений пароль " + ".txt").exists()) {

System.out.println("Error loading " + " Введений пароль ");

return "";

}

FileReader fstream = new FileReader("Парол³/" + " Введений пароль " + ".txt");

BufferedReader in = new BufferedReader(fstream);

String line;

while ((line = in.readLine()) != null) {

if (line.equals("[end]"))

break;

String[] param = line.split("_");

gg= param[1];

}

} catch (Exception e) {

e.printStackTrace();

}

return gg;

}

public static void Recommend(String pass, JTextArea ta2) {

String[] Pass = new String[5];

String word[] = Iterate.Asci(pass);

int r = word.length;

int k = 0;

for(int i=0; i<5; i++) {

int a = 1 + (int) (Math.random() * r);

int b = 100 + (int) (Math.random() * 899);

Pass[i]=word[a] + b;

k = Pass[i].length();

}

StringBuilder sb1=new StringBuilder();

for(int h = 0; h<5; h++) {

for(int i=0;i<k;i++)

{

char t=Pass[h].charAt(i);

if(t == 111) sb1.append((char)(48));

else if(t == 105) sb1.append((char)(33));

else if(t == 97) sb1.append((char)(64));

else sb1.append((char)(t));

}

Pass[h]= sb1.toString();

sb1.setLength(0);

}

ta2.setText(Pass[0] + "\n" + Pass[1] + "\n" + Pass[2] + "\n" + Pass[3] + "\n" + Pass[4]);

}

}

Висновок:

У даній лабараторній роботі розроблено програмний засіб, який реалізує 2 алгоритми підбору паролів. Також розроблено програмний засіб для формування паролів зручних для користувача та стійких до зламу за допомогою розробленого раніше програмного засобу. Після виконання роботи ще раз переконалась, що мої особисті паролі є не надто надійними. Для того щоб це виправити я відредагувала свої паролі на надійні ( латиницею, з урахуванням регістру, включаючи цифри і складні символи ()*?:%;№»! ).

Соседние файлы в предмете Безопасность операционных систем