From 7cf55ce953f18e1df80f4178d4ae5678122f93a9 Mon Sep 17 00:00:00 2001 From: Thomas Schaller Date: Sun, 29 Dec 2024 14:26:34 +0100 Subject: [PATCH] =?UTF-8?q?Subtrees=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Quellcodes/iud_key_rsachat/.gitignore | 5 + Quellcodes/iud_key_rsachat/Base64.java | 111 +++ Quellcodes/iud_key_rsachat/ChatClient.jar | Bin 0 -> 76327 bytes Quellcodes/iud_key_rsachat/ChatClient.java | 658 ++++++++++++++++++ Quellcodes/iud_key_rsachat/ChatClient.jfm | 419 +++++++++++ Quellcodes/iud_key_rsachat/ChatServerGUI.jar | Bin 0 -> 75567 bytes Quellcodes/iud_key_rsachat/ChatServerGUI.java | 262 +++++++ Quellcodes/iud_key_rsachat/ChatServerGUI.jfm | 188 +++++ Quellcodes/iud_key_rsachat/JEClasses.jar | Bin 0 -> 90273 bytes Quellcodes/iud_key_rsachat/JMyButton.java | 38 + Quellcodes/iud_key_rsachat/JMyLabel.java | 35 + Quellcodes/iud_key_rsachat/Key.java | 193 +++++ Quellcodes/iud_key_rsachat/KeyPopup.java | 94 +++ .../iud_key_rsachat/META-INF/MANIFEST.MF | 5 + Quellcodes/iud_key_rsachat/ManInTheMiddle.jar | Bin 0 -> 76331 bytes .../iud_key_rsachat/ManInTheMiddle.java | 355 ++++++++++ Quellcodes/iud_key_rsachat/ManInTheMiddle.jfm | 355 ++++++++++ Quellcodes/iud_key_rsachat/MessagePopup.java | 59 ++ Quellcodes/iud_key_rsachat/MessagePopup2.java | 128 ++++ Quellcodes/iud_key_rsachat/MyServer.java | 98 +++ Quellcodes/iud_key_rsachat/MySocket.java | 196 ++++++ .../iud_key_rsachat/MySocketListener.java | 19 + Quellcodes/iud_key_rsachat/Nachricht.java | 183 +++++ Quellcodes/iud_key_rsachat/PicPanel.java | 53 ++ Quellcodes/iud_key_rsachat/RSA.java | 130 ++++ Quellcodes/iud_key_rsachat/TestRSA.java | 25 + Quellcodes/iud_key_rsachat/TestRSA2.java | 186 +++++ Quellcodes/iud_key_rsachat/arrow.png | Bin 0 -> 202 bytes Quellcodes/iud_key_rsachat/key0.png | Bin 0 -> 984 bytes Quellcodes/iud_key_rsachat/key0s.png | Bin 0 -> 1390 bytes Quellcodes/iud_key_rsachat/key1.png | Bin 0 -> 1043 bytes Quellcodes/iud_key_rsachat/key1s.png | Bin 0 -> 1446 bytes Quellcodes/iud_key_rsachat/key2.png | Bin 0 -> 999 bytes Quellcodes/iud_key_rsachat/key2s.png | Bin 0 -> 1382 bytes Quellcodes/iud_key_rsachat/key3.png | Bin 0 -> 1002 bytes Quellcodes/iud_key_rsachat/key3s.png | Bin 0 -> 1394 bytes Quellcodes/iud_key_rsachat/key4.png | Bin 0 -> 994 bytes Quellcodes/iud_key_rsachat/key4s.png | Bin 0 -> 1419 bytes Quellcodes/iud_key_rsachat/key5.png | Bin 0 -> 969 bytes Quellcodes/iud_key_rsachat/key5s.png | Bin 0 -> 1369 bytes Quellcodes/iud_key_rsachat/key6.png | Bin 0 -> 992 bytes Quellcodes/iud_key_rsachat/key6s.png | Bin 0 -> 1392 bytes Quellcodes/iud_key_rsachat/key7.png | Bin 0 -> 981 bytes Quellcodes/iud_key_rsachat/key7s.png | Bin 0 -> 1383 bytes Quellcodes/iud_key_rsachat/key8.png | Bin 0 -> 977 bytes Quellcodes/iud_key_rsachat/key8s.png | Bin 0 -> 1384 bytes Quellcodes/iud_key_rsachat/key9.png | Bin 0 -> 975 bytes Quellcodes/iud_key_rsachat/key9s.png | Bin 0 -> 1379 bytes Quellcodes/iud_key_rsachat/privateKey.RSA | Bin 0 -> 1476 bytes Quellcodes/iud_key_rsachat/publicKey.RSA | Bin 0 -> 551 bytes Quellcodes/iud_key_rsachat/readme.adoc | 12 + Quellcodes/iud_key_rsachat/sign.xcf | Bin 0 -> 1361 bytes Quellcodes/iud_key_rsachat/stop.png | Bin 0 -> 216 bytes 53 files changed, 3807 insertions(+) create mode 100644 Quellcodes/iud_key_rsachat/.gitignore create mode 100644 Quellcodes/iud_key_rsachat/Base64.java create mode 100644 Quellcodes/iud_key_rsachat/ChatClient.jar create mode 100644 Quellcodes/iud_key_rsachat/ChatClient.java create mode 100644 Quellcodes/iud_key_rsachat/ChatClient.jfm create mode 100644 Quellcodes/iud_key_rsachat/ChatServerGUI.jar create mode 100644 Quellcodes/iud_key_rsachat/ChatServerGUI.java create mode 100644 Quellcodes/iud_key_rsachat/ChatServerGUI.jfm create mode 100644 Quellcodes/iud_key_rsachat/JEClasses.jar create mode 100644 Quellcodes/iud_key_rsachat/JMyButton.java create mode 100644 Quellcodes/iud_key_rsachat/JMyLabel.java create mode 100644 Quellcodes/iud_key_rsachat/Key.java create mode 100644 Quellcodes/iud_key_rsachat/KeyPopup.java create mode 100644 Quellcodes/iud_key_rsachat/META-INF/MANIFEST.MF create mode 100644 Quellcodes/iud_key_rsachat/ManInTheMiddle.jar create mode 100644 Quellcodes/iud_key_rsachat/ManInTheMiddle.java create mode 100644 Quellcodes/iud_key_rsachat/ManInTheMiddle.jfm create mode 100644 Quellcodes/iud_key_rsachat/MessagePopup.java create mode 100644 Quellcodes/iud_key_rsachat/MessagePopup2.java create mode 100644 Quellcodes/iud_key_rsachat/MyServer.java create mode 100644 Quellcodes/iud_key_rsachat/MySocket.java create mode 100644 Quellcodes/iud_key_rsachat/MySocketListener.java create mode 100644 Quellcodes/iud_key_rsachat/Nachricht.java create mode 100644 Quellcodes/iud_key_rsachat/PicPanel.java create mode 100644 Quellcodes/iud_key_rsachat/RSA.java create mode 100644 Quellcodes/iud_key_rsachat/TestRSA.java create mode 100644 Quellcodes/iud_key_rsachat/TestRSA2.java create mode 100644 Quellcodes/iud_key_rsachat/arrow.png create mode 100644 Quellcodes/iud_key_rsachat/key0.png create mode 100644 Quellcodes/iud_key_rsachat/key0s.png create mode 100644 Quellcodes/iud_key_rsachat/key1.png create mode 100644 Quellcodes/iud_key_rsachat/key1s.png create mode 100644 Quellcodes/iud_key_rsachat/key2.png create mode 100644 Quellcodes/iud_key_rsachat/key2s.png create mode 100644 Quellcodes/iud_key_rsachat/key3.png create mode 100644 Quellcodes/iud_key_rsachat/key3s.png create mode 100644 Quellcodes/iud_key_rsachat/key4.png create mode 100644 Quellcodes/iud_key_rsachat/key4s.png create mode 100644 Quellcodes/iud_key_rsachat/key5.png create mode 100644 Quellcodes/iud_key_rsachat/key5s.png create mode 100644 Quellcodes/iud_key_rsachat/key6.png create mode 100644 Quellcodes/iud_key_rsachat/key6s.png create mode 100644 Quellcodes/iud_key_rsachat/key7.png create mode 100644 Quellcodes/iud_key_rsachat/key7s.png create mode 100644 Quellcodes/iud_key_rsachat/key8.png create mode 100644 Quellcodes/iud_key_rsachat/key8s.png create mode 100644 Quellcodes/iud_key_rsachat/key9.png create mode 100644 Quellcodes/iud_key_rsachat/key9s.png create mode 100644 Quellcodes/iud_key_rsachat/privateKey.RSA create mode 100644 Quellcodes/iud_key_rsachat/publicKey.RSA create mode 100644 Quellcodes/iud_key_rsachat/readme.adoc create mode 100644 Quellcodes/iud_key_rsachat/sign.xcf create mode 100644 Quellcodes/iud_key_rsachat/stop.png diff --git a/Quellcodes/iud_key_rsachat/.gitignore b/Quellcodes/iud_key_rsachat/.gitignore new file mode 100644 index 0000000..c1f4551 --- /dev/null +++ b/Quellcodes/iud_key_rsachat/.gitignore @@ -0,0 +1,5 @@ +*.class +*.ctxt +*.sh +repo.adoc +*.~lock diff --git a/Quellcodes/iud_key_rsachat/Base64.java b/Quellcodes/iud_key_rsachat/Base64.java new file mode 100644 index 0000000..8affdcd --- /dev/null +++ b/Quellcodes/iud_key_rsachat/Base64.java @@ -0,0 +1,111 @@ +import java.io.ByteArrayOutputStream; +import java.util.Random; +import java.util.Arrays; +import javax.xml.bind.DatatypeConverter; + +public class Base64 +{ + public static String encode(String text) + { + byte[] data = text.getBytes(); + return encode(data); + } + + public static String encode(byte[] data) { + char[] tbl = { + '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','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','0','1','2','3','4','5','6','7','8','9','+','/' }; + + StringBuilder buffer = new StringBuilder(); + int pad = 0; + for (int i = 0; i < data.length; i += 3) { + + int b = ((data[i] & 0xFF) << 16) & 0xFFFFFF; + if (i + 1 < data.length) { + b |= (data[i+1] & 0xFF) << 8; + } else { + pad++; + } + if (i + 2 < data.length) { + b |= (data[i+2] & 0xFF); + } else { + pad++; + } + + for (int j = 0; j < 4 - pad; j++) { + int c = (b & 0xFC0000) >> 18; + buffer.append(tbl[c]); + b <<= 6; + } + } + for (int j = 0; j < pad; j++) { + buffer.append("="); + } + + return buffer.toString(); + } + + + public static String decodeStr(String data) + { + return new String(decode(data)); + } + + public static byte[] decode(String data) + { + int[] tbl = { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; + byte[] bytes = data.getBytes(); + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + for (int i = 0; i < bytes.length; ) { + int b = 0; + if (tbl[bytes[i]] != -1) { + b = (tbl[bytes[i]] & 0xFF) << 18; + } + // skip unknown characters + else { + i++; + continue; + } + + int num = 0; + if (i + 1 < bytes.length && tbl[bytes[i+1]] != -1) { + b = b | ((tbl[bytes[i+1]] & 0xFF) << 12); + num++; + } + if (i + 2 < bytes.length && tbl[bytes[i+2]] != -1) { + b = b | ((tbl[bytes[i+2]] & 0xFF) << 6); + num++; + } + if (i + 3 < bytes.length && tbl[bytes[i+3]] != -1) { + b = b | (tbl[bytes[i+3]] & 0xFF); + num++; + } + + while (num > 0) { + int c = (b & 0xFF0000) >> 16; + buffer.write((char)c); + b <<= 8; + num--; + } + i += 4; +} + return buffer.toByteArray(); + } +} diff --git a/Quellcodes/iud_key_rsachat/ChatClient.jar b/Quellcodes/iud_key_rsachat/ChatClient.jar new file mode 100644 index 0000000000000000000000000000000000000000..a89c611866c7e8da313f24abfe82d90e5d9238ca GIT binary patch literal 76327 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�jISy+hlw7Gf( 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

Nm|9lIgd{5z3#YP0&XS*5G6Z8xhvKnJId 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 literal 0 HcmV?d00001 diff --git a/Quellcodes/iud_key_rsachat/ChatClient.java b/Quellcodes/iud_key_rsachat/ChatClient.java new file mode 100644 index 0000000..3ca2009 --- /dev/null +++ b/Quellcodes/iud_key_rsachat/ChatClient.java @@ -0,0 +1,658 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; +import java.util.*; +import java.awt.image.BufferedImage; +import java.math.BigInteger; + +/** + * + * Beschreibung + * + * @version 1.1 vom 30.01.2020 + * @author Thomas Schaller + * Version 1.1: Hash-Funkion ausgetauscht, damit Hashes unterschiedlicher. , Ö/P-Schlüssel in der gleichen Farbe + */ + +public class ChatClient extends JFrame implements MySocketListener { + // + protected int HOEHE = 60; + // Anfang Attribute + protected JPanel jPanel1 = new JPanel(null, true); + protected JLabel jLabel2 = new JLabel(); + protected JTextField jTFName = new JTextField(); + protected JTextField jTFAdress = new JTextField(); + protected JLabel jLabel3 = new JLabel(); + protected JButton jBVerbinden = new JButton(); + protected JLabel jLabel1 = new JLabel(); + protected JNumberField jNFPort = new JNumberField(); + protected JTextField jTFNachricht = new JTextField(); + + protected MySocket client = null; + protected JLabel jLabel5 = new JLabel(); + protected JScrollPane jScrollPane1 = new JScrollPane(); + protected JScrollPane jScrollPane2 = new JScrollPane(); + protected JPanel jp; + protected ArrayList nachrichten; + protected ArrayList keys; + protected ArrayList kontakte; + protected Key dragKey = null; + protected JLabel jLabel4 = new JLabel(); + protected GridBagLayout gbl; + protected int keyColor = 0; + private JLabel jLabel6 = new JLabel(); + // Ende Attribute + + public ChatClient(String title) { + // Frame-Initialisierung + super(title); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + addWindowListener(new WindowListener() { + public void windowActivated(WindowEvent e) {} + public void windowClosed(WindowEvent e) {} + public void windowClosing(WindowEvent e) { + if (client != null) { + client.sendeNachricht("exit"); + client.trenneVerbindung(); + } // end of if + } + public void windowDeactivated(WindowEvent e) {} + public void windowDeiconified(WindowEvent e) {} + public void windowIconified(WindowEvent e){} + public void windowOpened(WindowEvent e){} + }); + + + int frameWidth = 1081; + int frameHeight = 683; + setSize(frameWidth, frameHeight); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width) / 2; + int y = (d.height - getSize().height) / 2; + setLocation(x, y); + setResizable(false); + Container cp = getContentPane(); + cp.setLayout(null); + // Anfang Komponenten + + jPanel1.setBounds(8, 8, 1041, 41); + jPanel1.setOpaque(false); + jPanel1.setBorder(BorderFactory.createBevelBorder(1, Color.WHITE, Color.DARK_GRAY)); + cp.add(jPanel1); + jLabel2.setBounds(264, 11, 62, 20); + jLabel2.setText("Server"); + jPanel1.add(jLabel2); + jTFName.setBounds(80, 11, 150, 20); + jTFName.setText("anonymous"); + jPanel1.add(jTFName); + jTFAdress.setBounds(312, 11, 150, 20); + jTFAdress.setText("localhost"); + jPanel1.add(jTFAdress); + jLabel3.setBounds(496, 11, 62, 20); + jLabel3.setText("Port"); + jPanel1.add(jLabel3); + jBVerbinden.setBounds(936, 8, 99, 25); + jBVerbinden.setText("Verbinden"); + jBVerbinden.setMargin(new Insets(2, 2, 2, 2)); + jBVerbinden.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + jBVerbinden_ActionPerformed(evt); + } + }); + jPanel1.add(jBVerbinden); + + + jLabel1.setBounds(8, 12, 62, 18); + jLabel1.setText("Name"); + jPanel1.add(jLabel1); + jNFPort.setBounds(528, 11, 75, 20); + jNFPort.setText("44444"); + jPanel1.add(jNFPort); + jLabel5.setBounds(8, 64, 62, 20); + jLabel5.setText("Schlüssel"); + cp.add(jLabel5); + keys = new ArrayList(); + + JPanel jp2 = new PicPanel(keys); + jp2.setToolTipText(""); + jScrollPane2 = new JScrollPane(jp2); + + jScrollPane2.setBounds(96, 64, 953, 57); + jp2.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent evt) { + keyCached(evt); + } + public void mouseReleased(MouseEvent evt) { + keyDropped(evt); + } + }); + cp.add(jScrollPane2); + jLabel4.setBounds(8, 144, 86, 20); + jLabel4.setText("Nachrichten"); + cp.add(jLabel4); + addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent evt) { + ChatClient_WindowClosing(evt); + } + }); + jLabel6.setBounds(816, 624, 229, 20); + jLabel6.setText("(cc) 2020, Thomas Schaller, Version 1.1"); + jLabel6.setForeground(Color.GRAY); + cp.add(jLabel6); + // Ende Komponenten + + jTFNachricht.setBounds(10, 20, 358, 20); + jTFNachricht.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + jTFNachricht_ActionPerformed(evt); + } + }); + + + Random ran = new Random(); + nachrichten = new ArrayList(); + + + kontakte = new ArrayList(); + kontakte.add("alle"); + + + jp = new JPanel(); + jScrollPane1 = new JScrollPane(jp); + jScrollPane1.setBounds(96, 136, 953, 481); + jScrollPane1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); + jp.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent evt) { + keyMessageCached(evt); + } + public void mouseReleased(MouseEvent evt) { + keyMessageDropped(evt); + } + }); + cp.add(jScrollPane1); + gbl = new GridBagLayout(); + jp.setLayout(gbl); + + this.updateNachrichtenListe(); + + + + setVisible(true); + } // end of public ChatClient + + // Anfang Methoden + public void jBVerbinden_ActionPerformed(ActionEvent evt) { + String a = jTFAdress.getText(); + int p = jNFPort.getInt(); + if (client != null && client.isAktiv()) { + jTFName.setEnabled(true); + jTFAdress.setEnabled(true); + jNFPort.setEnabled(true); + jBVerbinden.setText("Verbinden"); + client.sendeNachricht("exit"); + client.trenneVerbindung(); + } else { + client = new MySocket(a, p, this); + if (client.isAktiv()) { + jTFName.setEnabled(false); + jTFAdress.setEnabled(false); + jNFPort.setEnabled(false); + jBVerbinden.setText("Trennen"); + client.sendeNachricht(("user:"+jTFName.getText()+":alle")); + } + + + } // end of if-else + + } // end of jBVerbinden_ActionPerformed + + + public byte[] appendOther(byte[] a1, byte[] a2){ + byte[] a3 = new byte[a1.length + a2.length]; + System.arraycopy(a1, 0, a3, 0, a1.length); + System.arraycopy(a2, 0, a3, a1.length, a2.length); + return a3; + } + + + public void jBSend_ActionPerformed(ActionEvent evt) { + if (client != null && client.isAktiv()) { + JMyButton button = (JMyButton) evt.getSource(); + Nachricht n = button.getNachricht(); + n.setEmpfaenger((String) button.getEmpfaenger().getSelectedItem()); + String b = "mess:"+n.getAbsender()+":"+n.getEmpfaenger()+":"+Base64.encode(n.getInhalt())+":"+Base64.encode(n.getHashCode()); + client.sendeNachricht(b); + this.updateNachrichtenListe(); + } else { + jTFName.setEnabled(true); + jTFAdress.setEnabled(true); + jNFPort.setEnabled(true); + jBVerbinden.setEnabled(true); + } // end of if + } // end of jBSend_ActionPerformed + + + public void generateKeyPair(int bits) { + RSA rsa = new RSA(bits); + rsa.generateKey(); + int c = keyColor; + addKey(rsa.getPublicKey()); + keyColor = c; + addKey(rsa.getPrivateKey()); + } + + public void addKey(Key k) { + boolean schonda = false; + for (Key kk : keys) { + if (kk.getN().equals(k.getN()) && kk.getE().equals(k.getE())) { + JOptionPane.showMessageDialog(this, + "Dieser Schlüssel entspricht dem schon vorhandenen Schlüssel "+kk.getName(), + "Achtung", + JOptionPane.WARNING_MESSAGE); + break; + } // end of if + } // end of for + + k.setImage("key"+keyColor); + keyColor = (keyColor+1)%10; + keys.add(k); + + + jScrollPane2.repaint(); + } + + public void showPublicZertKey() { + Key k = RSA.getPublicKeyZert(); + addKey(k); + + } + + public void signKey(Key k) { + Key nk = new Key(k.getName()+"(z)",k.getE(),k.getN()); + nk.sign(RSA.getPrivateKeyZert(),jTFName.getText()); + nk.setImage(k.getFilename()+"s"); + + keys.add(keys.indexOf(k)+1,nk); + jScrollPane2.repaint(); + } + + public void deleteKey(Key k) { + keys.remove(k); + jScrollPane2.repaint(); + } + + + + public void neuerClient(MySocket client) { + + } + + public void nachrichtEmpfangen(MySocket client) { + String s = client.holeNachricht(); + String[] ss = s.split(":"); + + if (ss[0].equals("user")) { + kontakte.add(ss[1]); + Nachricht n = new Nachricht("Server","alle","Neuer User: "+ss[1]); + n.setSended(true); + nachrichten.add(0,n); + this.updateNachrichtenListe(); + + } + if(ss[0].equals("mess")) { + String hash; + if (ss.length==5) { + hash = ss[4]; + } else { + hash = ""; + }// end of if + Nachricht n = new Nachricht(ss[1],ss[2],Base64.decode(ss[3]),Base64.decode(hash)); + nachrichten.add(0,n); + this.updateNachrichtenListe(); + + } // end of if + } + + public void verbindungBeendet(MySocket client) { + jTFName.setEnabled(true); + jTFAdress.setEnabled(true); + jNFPort.setEnabled(true); + jBVerbinden.setText("Verbinden"); + client = null; + } + + public void jTFNachricht_ActionPerformed(ActionEvent evt) { + Nachricht n = new Nachricht(jTFName.getText(),"", jTFNachricht.getText()); + jTFNachricht.setText(""); + nachrichten.add(0,n); + this.updateNachrichtenListe(); + jTFNachricht.requestFocus(); + } // end of jTFNachricht_ActionPerformed + + public void keyCached(MouseEvent evt) { + Key k = null; + if (evt.getX()>10 && evt.getX()< keys.size()*32+10) { + int k_nr = (int) ((evt.getX()-10) /32); + k = keys.get(k_nr); + } + if (evt.getButton() == evt.BUTTON1) { + if (k != null) { + Toolkit toolkit = Toolkit.getDefaultToolkit(); + dragKey = k; + Cursor c = toolkit.createCustomCursor(dragKey.getImage() , new Point(0, 0), "img"); + setCursor (c); + + } + + } else { + + new KeyPopup(evt,this, k); + } // end of if + + } + + + + public void keyDropped(MouseEvent evt) { + GridBagConstraints c = new GridBagConstraints(); + + Point p = evt.getPoint(); + Point pp = SwingUtilities.convertPoint(jScrollPane2, p, jScrollPane2.getParent()); + Point pp2 = SwingUtilities.convertPoint(jScrollPane2, p, jScrollPane1); + + if (pp2.getY()>0 && pp2.getY() < jScrollPane1.getHeight() && pp2.getX()>=0 && pp2.getX() < jScrollPane1.getWidth() && dragKey!=null) { + Point ppp = SwingUtilities.convertPoint(jScrollPane2, p, jp); + Component cc = jp.getComponentAt(ppp.x,ppp.y); + GridBagLayout gbl = (GridBagLayout) jp.getLayout(); + c = gbl.getConstraints(cc); + + int n_nr = c.gridy-1; + if (n_nr == -1) { + Nachricht n; + if (dragKey.isSigned()) { + n = new Nachricht(jTFName.getText(),"",dragKey.toString(jTFName.getText()).getBytes(),dragKey.getHashCode()); + } else { + n = new Nachricht(jTFName.getText(),"",dragKey.toString(jTFName.getText())); + } // end of if-else + nachrichten.add(0,n); + this.updateNachrichtenListe(); + + + } + if (n_nr >= 0 && n_nr < nachrichten.size() && c.gridx==1) { + byte[] klar = nachrichten.get(n_nr).getInhalt(); + if (dragKey.calcBlocksize()= 0 && n_nr < nachrichten.size() && c.gridx==2) { + byte[] klar = nachrichten.get(n_nr).getHashCode(); + if (dragKey.calcBlocksize()= 0) { + int n_nr = gbc.gridy-1; + String[] teile = nachrichten.get(n_nr).getInhaltString().split(",|="); + + if (teile[0].equals("Key:Name")) { + + BigInteger e = new BigInteger(teile[3]); + BigInteger n = new BigInteger(teile[5]); + + dragKey = new Key(teile[1],e,n) ; + dragKey.setImage("key"+keyColor); + + Toolkit toolkit = Toolkit.getDefaultToolkit(); + Cursor c = toolkit.createCustomCursor(dragKey.getImage() , new Point(0, 0), "img"); + setCursor (c); + } // end of if + + } + + } // end of if + if (evt.getButton() == evt.BUTTON3 && gbc.gridx == 1) { + int n_nr = gbc.gridy-1; + makeMessagePopup(evt,nachrichten.get(n_nr)); + + } // end of if + + } + + + protected void makeMessagePopup(MouseEvent evt, Nachricht n) { + new MessagePopup(evt, this, n); + } + + public void keyMessageDropped(MouseEvent evt) { + + + Point p = evt.getPoint(); + Point pp = SwingUtilities.convertPoint(jp, p, jScrollPane2); + + if (pp.getY()>0 && pp.getY() < jScrollPane2.getHeight() && pp.getX()>=0 && pp.getX() < jScrollPane2.getWidth() && dragKey!=null) { + this.addKey(dragKey); + } + dragKey = null; + + Cursor dc = new Cursor(Cursor.DEFAULT_CURSOR); + setCursor (dc); + } // end of jLabel5_MouseClicked + + + + public void updateNachrichtenListe() { + + //jp.setBounds(jScrollPane1.getViewport().getBounds()); + GridBagConstraints c = new GridBagConstraints(); + while (jp.getComponentCount()>1) { + jp.remove(1); + } // end of while + //jp.removeAll(); + + if (jp.getComponentCount()==0) { + JPanel eingabe = new JPanel(); + eingabe.setBorder(BorderFactory.createBevelBorder(0)); + eingabe.setLayout(null); + eingabe.setBackground(new Color(250,255,200)); + eingabe.setOpaque(true); + eingabe.setPreferredSize(new Dimension(150,HOEHE)); + + c.gridx=0; c.gridy = 0; + c.gridwidth=5; + c.fill = GridBagConstraints.BOTH; + c.weightx = 1.0; + jTFNachricht.setBounds(100,20,800,20); + JLabel nn = new JLabel(); + nn.setText("Neue Nachricht"); + nn.setBounds(2,20,90,20); + eingabe.add(nn); + eingabe.add(jTFNachricht); + jp.add(eingabe,c); + + } // end of if + c.weightx=0; + c.gridwidth=1; + int xx = 1; + JLabel name = null; + for (Nachricht n : nachrichten) { + + if (n.getKeys().size()>0 && name != null) { + GridBagConstraints c2 = gbl.getConstraints(name); + c2.gridheight++; + gbl.setConstraints(name,c2); + } else { + name = new JLabel(); + name.setText("Von "+n.getAbsender()+""); + name.setBorder(BorderFactory.createBevelBorder(0)); + name.setBackground(new Color(250,255,200)); + name.setOpaque(true); + c.gridx=0; c.gridy = xx; + c.fill = GridBagConstraints.BOTH; + jp.add(name,c); + + } // end of if-else + JPanel nnn = new JPanel(); + nnn.setLayout(new GridBagLayout()); + nnn.setBorder(BorderFactory.createBevelBorder(0)); + nnn.setBackground(new Color(250,255,200)); + nnn.setOpaque(true); + + PicPanel pp = new PicPanel(n.getKeys()); + pp.setPreferredSize(new Dimension(n.getKeys().size()*32,HOEHE)); + pp.setBackground(new Color(250,255,200)); + + JMyLabel nachricht = new JMyLabel(n,""); + if (n.getInhaltString().trim().length()>65) { + nachricht.setText(""+n.getInhaltString().trim().substring(0,62)+"..."); + } else { + nachricht.setText(""+n.getInhaltString().trim()+""); + } // end of if-else + + c.gridx=0; c.gridy = 0; + c.weightx=1.0; c.weighty= 0; + + nnn.add(nachricht,c); + c.gridx=1; c.gridy = 0; + c.weightx=0.0; c.weighty= 0; + + nnn.add(pp,c); + c.gridx=1; c.gridy = xx; + c.weightx = 1.0; + jp.add(nnn,c); + + nnn = new JPanel(); + nnn.setLayout(new GridBagLayout()); + nnn.setBorder(BorderFactory.createBevelBorder(0)); + nnn.setBackground(new Color(250,255,200)); + nnn.setOpaque(true); + + pp = new PicPanel(n.getHashKeys()); + pp.setPreferredSize(new Dimension(n.getHashKeys().size()*32,HOEHE)); + pp.setBackground(new Color(250,255,200)); + + String hc = new String(n.getHashCode()); + if (hc.trim().length()>15) { + hc = hc.substring(0,15)+"..."; + } //end of if-else + + JMyLabel hash = new JMyLabel(n, hc); + + + + c.gridx=0; c.gridy = 0; + c.weightx=1.0; c.weighty= 0; + + nnn.add(hash,c); + c.gridx=1; c.gridy = 0; + c.weightx=0.0; c.weighty= 0; + + nnn.add(pp,c); + c.gridx=2; c.gridy = xx; + c.weightx = 0.0; + jp.add(nnn,c); + + JPanel abspanel = new JPanel(); + abspanel.setPreferredSize(new Dimension(150,HOEHE)); + abspanel.setBorder(BorderFactory.createBevelBorder(0)); + abspanel.setBackground(new Color(250,255,200)); + abspanel.setOpaque(true); + abspanel.setLayout(new FlowLayout()); + + if (n.getEmpfaenger().equals("")) { + String[] stringlist = new String[100]; + JComboBox cb = new JComboBox(kontakte.toArray(stringlist)); + + abspanel.add(cb); + + ImageIcon water = new ImageIcon("arrow.png"); + JMyButton button = new JMyButton(n, cb, water); + button.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + jBSend_ActionPerformed(evt); + } + }); + abspanel.add(button); + + } else { + abspanel.add(new JLabel("an "+n.getEmpfaenger())); + } + c.gridx=4; c.gridy = xx; + c.weightx = 0.0; + jp.add(abspanel,c); + xx++; + } + JPanel dummy = new JPanel(); + dummy.setBorder(BorderFactory.createBevelBorder(0)); + dummy.setLayout(null); + dummy.setBackground(new Color(250,255,200)); + dummy.setOpaque(true); + dummy.setPreferredSize(new Dimension(150,HOEHE)); + + c.gridx=0; c.gridy = xx; + c.gridwidth=5; + c.fill = GridBagConstraints.BOTH; + c.weightx = 1.0; + c.weighty = 1.0; + jp.add(dummy,c); + + jp.revalidate(); + jp.repaint(); + } + + public void ChatClient_WindowClosing(WindowEvent evt) { + // TODO hier Quelltext einfügen + } // end of ChatClient_WindowClosing + + // Ende Methoden + + public static void main(String[] args) { + new ChatClient("ChatClient"); + } // end of main + +} // end of class ChatClient + diff --git a/Quellcodes/iud_key_rsachat/ChatClient.jfm b/Quellcodes/iud_key_rsachat/ChatClient.jfm new file mode 100644 index 0000000..02baab7 --- /dev/null +++ b/Quellcodes/iud_key_rsachat/ChatClient.jfm @@ -0,0 +1,419 @@ +object ChatClient: TFGUIForm + Left = 0 + Top = 0 + BorderIcons = [biSystemMenu, biMinimize] + Caption = 'ChatClient' + ClientHeight = 644 + ClientWidth = 1065 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsMDIChild + OldCreateOrder = True + Position = poDesigned + ShowHint = True + Visible = True + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnResize = FormResize + FrameType = 5 + Resizable = False + Undecorated = False + Background = clBtnFace + windowClosing = 'ChatClient_WindowClosing' + PixelsPerInch = 96 + TextHeight = 13 + object jPanel1: TJPanel + Tag = 12 + Left = 8 + Top = 8 + Width = 1041 + Height = 41 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Border.BorderType = BevelBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clWhite + Border.BevelShadowColor = 4210752 + Border.Beveltype = 1 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + object jLabel2: TJLabel + Tag = 1 + Left = 264 + Top = 11 + Width = 62 + Height = 20 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Text = 'Server' + HorizontalAlignment = LEFT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + object jTFName: TJTextField + Tag = 2 + Left = 80 + Top = 11 + Width = 150 + Height = 20 + Cursor = crIBeam + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [] + Foreground = 3355443 + Background = clWhite + HorizontalAlignment = LEFT + Text = 'anonymous' + Editable = True + end + object jTFAdress: TJTextField + Tag = 2 + Left = 312 + Top = 11 + Width = 150 + Height = 20 + Cursor = crIBeam + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [] + Foreground = 3355443 + Background = clWhite + HorizontalAlignment = LEFT + Text = 'localhost' + Editable = True + end + object jLabel3: TJLabel + Tag = 1 + Left = 496 + Top = 11 + Width = 62 + Height = 20 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Text = 'Port' + HorizontalAlignment = LEFT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + object jBVerbinden: TJButton + Tag = 4 + Left = 936 + Top = 8 + Width = 99 + Height = 25 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'jBVerbinden_ActionPerformed' + Text = 'Verbinden' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object jLabel1: TJLabel + Tag = 1 + Left = 8 + Top = 12 + Width = 62 + Height = 18 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Text = 'Name' + HorizontalAlignment = LEFT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + object jNFPort: TJNumberField + Tag = 21 + Left = 528 + Top = 11 + Width = 75 + Height = 20 + Cursor = crIBeam + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [] + Foreground = 3355443 + Background = clWhite + HorizontalAlignment = LEFT + Text = '44444' + Editable = True + end + end + object jTFNachricht: TJTextField + Tag = 2 + Left = 672 + Top = 320 + Width = 358 + Height = 20 + Cursor = crIBeam + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [] + Foreground = 3355443 + Background = clWhite + actionPerformed = 'jTFNachricht_ActionPerformed' + HorizontalAlignment = LEFT + Editable = True + end + object jBSend: TJButton + Tag = 4 + Left = 720 + Top = 254 + Width = 99 + Height = 25 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + actionPerformed = 'jBSend_ActionPerformed' + Text = 'Abschicken' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object jLabel5: TJLabel + Tag = 1 + Left = 8 + Top = 64 + Width = 62 + Height = 20 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + mouseClicked = 'jLabel5_MouseClicked' + Text = 'Schl'#252'ssel' + HorizontalAlignment = LEFT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + object jScrollPane1: TJScrollPane + Tag = 11 + Left = 96 + Top = 136 + Width = 953 + Height = 481 + Hint = 'jScrollPane1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + HorizontalScrollBarPolicy = AS_NEEDED + VerticalScrollBarPolicy = ALWAYS + Autoscrolls = False + WheelScrollingEnabled = True + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object jScrollPane2: TJScrollPane + Tag = 11 + Left = 96 + Top = 64 + Width = 953 + Height = 57 + Hint = 'jScrollPane2' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = 15658734 + HorizontalScrollBarPolicy = AS_NEEDED + VerticalScrollBarPolicy = AS_NEEDED + Autoscrolls = False + WheelScrollingEnabled = True + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object jLabel4: TJLabel + Tag = 1 + Left = 8 + Top = 144 + Width = 86 + Height = 20 + Hint = 'jLabel4' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = 3355443 + Background = clBtnFace + Text = 'Nachrichten' + HorizontalAlignment = LEFT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + object jLabel6: TJLabel + Tag = 1 + Left = 816 + Top = 624 + Width = 229 + Height = 20 + Hint = 'jLabel3' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Foreground = clGray + Background = clBtnFace + Text = '(cc) 2017, Thomas Schaller, Version 1.0' + HorizontalAlignment = LEFT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end +end diff --git a/Quellcodes/iud_key_rsachat/ChatServerGUI.jar b/Quellcodes/iud_key_rsachat/ChatServerGUI.jar new file mode 100644 index 0000000000000000000000000000000000000000..5ff5b792de50e5cc1f9c4ddaf6d37773499fa59b GIT binary patch literal 75567 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 z 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 literal 0 HcmV?d00001 diff --git a/Quellcodes/iud_key_rsachat/ChatServerGUI.java b/Quellcodes/iud_key_rsachat/ChatServerGUI.java new file mode 100644 index 0000000..e97b8d4 --- /dev/null +++ b/Quellcodes/iud_key_rsachat/ChatServerGUI.java @@ -0,0 +1,262 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; +import java.util.ArrayList; + +/** + * + * Beschreibung + * + * @version 1.0 vom 26.05.2017 + * @author + */ + +public class ChatServerGUI extends JFrame implements MyServerSocketListener { + // Anfang Attribute + private ArrayList clients; + private ArrayList names; + private static boolean ende; + private MyServer server; + private JLabel jLabel1 = new JLabel(); + private JButton jBStarten = new JButton(); + private JNumberField jNFPort = new JNumberField(); + private JList jList1 = new JList(); + private DefaultListModel jList1Model = new DefaultListModel(); + private JScrollPane jList1ScrollPane = new JScrollPane(jList1); + private JLabel jLabel2 = new JLabel(); + private int changeClientListAktiv = 0; + private JLabel jLabel3 = new JLabel(); + // Ende Attribute + + public ChatServerGUI() { + // Frame-Initialisierung + super(); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + int frameWidth = 300; + int frameHeight = 311; + setSize(frameWidth, frameHeight); + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + int x = (d.width - getSize().width) / 2; + int y = (d.height - getSize().height) / 2; + setLocation(x, y); + setTitle("Chat-Server"); + setResizable(false); + Container cp = getContentPane(); + cp.setLayout(null); + // Anfang Komponenten + + jLabel1.setBounds(8, 16, 110, 20); + jLabel1.setText("Portnummer"); + cp.add(jLabel1); + jBStarten.setBounds(96, 48, 75, 25); + jBStarten.setText("Starten"); + jBStarten.setMargin(new Insets(2, 2, 2, 2)); + jBStarten.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + jBStarten_ActionPerformed(evt); + } + }); + cp.add(jBStarten); + jNFPort.setBounds(128, 16, 99, 20); + jNFPort.setText("44444"); + cp.add(jNFPort); + jList1.setModel(jList1Model); + jList1ScrollPane.setBounds(8, 112, 265, 137); + cp.add(jList1ScrollPane); + jLabel2.setBounds(8, 88, 110, 20); + jLabel2.setText("Chatteilnehmer"); + cp.add(jLabel2); + addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent evt) { + ChatServerGUI_WindowClosing(evt); + } + }); + jLabel3.setBounds(24, 248, 229, 20); + jLabel3.setText("(cc) 2017, Thomas Schaller, Version 1.0"); + jLabel3.setForeground(Color.GRAY); + cp.add(jLabel3); + // Ende Komponenten + + setVisible(true); + + clients = new ArrayList(); + names = new ArrayList(); + server = null; + + } // end of public ChatServerGUI + + + + // Anfang Methoden + + public void neuerClient(MySocket client) { + for (String n : names) { + if (!n.equals("ManInTheMiddle")) { + client.sendeNachricht("user:"+n); + } // end of if + } // end of for + this.clients.add(client); + // System.out.println("Habe Kontakt mit "+client.getSocket().getInetAddress()+" Port "+client.getSocket().getPort()); + this.names.add("?"); + // changeClientList(); + } + + public void changeClientList() { + changeClientListAktiv++; + if (changeClientListAktiv == 1) { + do{ + changeClientListAktiv--; + DefaultListModel newListModel = new DefaultListModel(); + System.out.println("lm: "+jList1Model.size()); + System.out.println("Clients: "+clients.size()); + for (int i = 0; i < clients.size() ; i++ ) { + MySocket s = clients.get(i); + String n = names.get(i); + newListModel.addElement(n+"("+s.getSocket().getInetAddress()+":"+s.getSocket().getPort()+")"); + System.out.println(n+"("+s.getSocket().getInetAddress()+":"+s.getSocket().getPort()+")"); + System.out.println("lm: "+jList1Model.size()); + } // end of for + jList1.setModel(newListModel); + jList1.validate(); + } + while (changeClientListAktiv > 0 ); + } // end of if + } + + public void nachrichtEmpfangen(MySocket client) { + String s = client.holeNachricht(); + System.out.println("Habe Nachricht empfangen:"+s); + String[] ss = s.split(":"); + int i = clients.indexOf(client); + + if (ss[0].equals("exit")) { + s = s+names.get(i); + clients.remove(i); + names.remove(i); + client.trenneVerbindung(); + for (int j=0; jnh{|Dvl;^=H`^8bP%0JsxI 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 Q1^hQi2Y{W+;M)N3FGnMA&j0`b literal 0 HcmV?d00001 diff --git a/Quellcodes/iud_key_rsachat/JMyButton.java b/Quellcodes/iud_key_rsachat/JMyButton.java new file mode 100644 index 0000000..6b636cf --- /dev/null +++ b/Quellcodes/iud_key_rsachat/JMyButton.java @@ -0,0 +1,38 @@ +/** + * + * Beschreibung + * + * @version 1.0 vom 25.01.2016 + * @author + */ + + import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; +import java.util.*; + import java.awt.image.BufferedImage; + +public class JMyButton extends JButton { + + // Anfang Attribute + private Nachricht nachricht; + private JComboBox empfaenger; + // Ende Attribute + + public JMyButton(Nachricht nachricht, JComboBox cb, ImageIcon ii) { + super(ii); + this.nachricht = nachricht; + this.empfaenger = cb; + } + + // Anfang Methoden + public Nachricht getNachricht() { + return nachricht; + } + + public JComboBox getEmpfaenger() { + + return empfaenger; + }// Ende Methoden +} // end of JMyLabel diff --git a/Quellcodes/iud_key_rsachat/JMyLabel.java b/Quellcodes/iud_key_rsachat/JMyLabel.java new file mode 100644 index 0000000..c069b27 --- /dev/null +++ b/Quellcodes/iud_key_rsachat/JMyLabel.java @@ -0,0 +1,35 @@ +/** + * + * Beschreibung + * + * @version 1.0 vom 25.01.2016 + * @author + */ + + import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.event.*; +import java.util.*; + import java.awt.image.BufferedImage; + +public class JMyLabel extends JLabel { + + // Anfang Attribute + private Nachricht nachricht; + + // Ende Attribute + + public JMyLabel(Nachricht nachricht, String s) { + super(); + this.setText(s); + this.nachricht = nachricht; + + } + + // Anfang Methoden + public Nachricht getNachricht() { + return nachricht; + } + +} // end of JMyLabel diff --git a/Quellcodes/iud_key_rsachat/Key.java b/Quellcodes/iud_key_rsachat/Key.java new file mode 100644 index 0000000..cb4faa9 --- /dev/null +++ b/Quellcodes/iud_key_rsachat/Key.java @@ -0,0 +1,193 @@ +/** + * + * description + * + * @version 1.0 from 15.01.2016 + * @author + */ + +import java.io.IOException; +import java.math.BigInteger; +import java.util.Random; +import java.awt.Graphics; + import java.awt.image.BufferedImage; + import java.io.IOException; + import java.net.URL; + import javax.imageio.ImageIO; + import javax.swing.*; + import java.util.*; + import java.awt.FontMetrics; + +public class Key { + + // Anfang Attribute + private String name; + private BigInteger n; + private BigInteger e; + private int BLOCKSIZE; + private BufferedImage image; + private String filename; + private byte[] hashCode; + // Ende Attribute + + public Key(String name, BigInteger e, BigInteger n) { + this.name = name; + this.n = n; + this.e = e; + this.image = image; + this.hashCode = null; + calcBlocksize(); + } + + // Anfang Methoden + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public BigInteger getN() { + return n; + } + + public BigInteger getE() { + return e; + } + + public void setImage(String filename) { + URL pic_url = this.getClass().getClassLoader().getResource(filename+".png"); //kein Slash vor dem Unterordner! + this.filename = filename; + //Bild laden mit ImageIO + try { + image = ImageIO.read(pic_url); + } catch (IOException e) { + e.printStackTrace(); + } + + + } + + public String getFilename() { + return filename; + } + + public BufferedImage getImage() { + return image; + } + + private BigInteger convert(String text) { + BigInteger i = BigInteger.valueOf(0); + for(int j =0; j < text.length(); j++) { + i = i.multiply(BigInteger.valueOf(256)); + i = i.add(BigInteger.valueOf((int) text.charAt(j))); + } // end of while + // System.out.println(text+" in "+i.toString()+" umgewandelt."); + return i; + } + + public BigInteger convert(byte[] text) { + BigInteger i = BigInteger.valueOf(0); + for(int j =text.length-1; j >=0; j--) { + i = i.multiply(BigInteger.valueOf(256)); + int unsingedByte = ((int)text[j]) & 0xFF; + // System.out.println(""+unsingedByte+" "); + i = i.add(BigInteger.valueOf(unsingedByte)); + } // end of while + // System.out.println(""); + // System.out.println(new String(text)+" in "+i.toString()+" umgewandelt."); + return i; + } + + /* private String convert(BigInteger i) { + String text = ""; + int j = 0; + while (text.length()PD=`xgDz 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 saAs=*T}TXm0) { + GridBagConstraints c2 = gbl.getConstraints(c[cnr]); + while (cnr < c.length-1 && (c2.gridx != 4 || c2.gridy!=i+1)) { + cnr++; + c2 = gbl.getConstraints(c[cnr]); + + } // end of while + JPanel p = (JPanel) (c[cnr]); + if (p.getComponents()[1] instanceof JLabel) { + JLabel l = (JLabel) (p.getComponents()[1]); + l.setText(""+n.getRestzeit()+" sek"); + + } // end of if + } else { + if (!n.getSended() && !n.getStopped() && !n.getEmpfaenger().equals("")) { + sendMessage(n); + updateNachrichtenListe(); + break; + }// end of if-else// end of if + } + i++; + } // end of for + } + + public void updateNachrichtenListe() { + + GridBagConstraints c = new GridBagConstraints(); + while (jp.getComponentCount()>1) { + jp.remove(1); + } // end of while + //jp.removeAll(); + + if (jp.getComponentCount()==0) { + JPanel eingabe = new JPanel(); + eingabe.setBorder(BorderFactory.createBevelBorder(0)); + eingabe.setLayout(null); + eingabe.setBackground(new Color(250,255,200)); + eingabe.setOpaque(true); + eingabe.setPreferredSize(new Dimension(150,60)); + + c.gridx=0; c.gridy = 0; + c.gridwidth=5; + c.fill = GridBagConstraints.BOTH; + c.weightx = 1.0; + jTFNachricht.setBounds(100,20,800,20); + JLabel nn = new JLabel(); + nn.setText("Neue Nachricht"); + nn.setBounds(2,20,90,20); + eingabe.add(nn); + eingabe.add(jTFNachricht); + jp.add(eingabe,c); + } + c.weightx=0; + c.gridwidth=1; + int xx = 1; + JLabel name = null; + for (Nachricht n : nachrichten) { + + if (n.getKeys().size()>0 && name != null) { + GridBagConstraints c2 = gbl.getConstraints(name); + c2.gridheight++; + gbl.setConstraints(name,c2); + } else { + name = new JLabel(); + name.setText("Von "+n.getAbsender()+""); + name.setBorder(BorderFactory.createBevelBorder(0)); + name.setBackground(new Color(250,255,200)); + name.setOpaque(true); + c.gridx=0; c.gridy = xx; + c.fill = GridBagConstraints.BOTH; + jp.add(name,c); + + } // end of if-else + JPanel nnn = new JPanel(); + nnn.setLayout(new GridBagLayout()); + nnn.setBorder(BorderFactory.createBevelBorder(0)); + nnn.setBackground(new Color(250,255,200)); + nnn.setOpaque(true); + + PicPanel pp = new PicPanel(n.getKeys()); + pp.setPreferredSize(new Dimension(n.getKeys().size()*32,60)); + pp.setBackground(new Color(250,255,200)); + + JMyLabel nachricht = new JMyLabel(n,""); + if (n.getInhaltString().trim().length()>65) { + nachricht.setText(""+n.getInhaltString().trim().substring(0,62)+"..."); + } else { + nachricht.setText(""+n.getInhaltString().trim()+""); + } // end of if-else + + c.gridx=0; c.gridy = 0; + c.weightx=1.0; c.weighty= 0; + + nnn.add(nachricht,c); + c.gridx=1; c.gridy = 0; + c.weightx=0.0; c.weighty= 0; + + nnn.add(pp,c); + c.gridx=1; c.gridy = xx; + c.weightx = 1.0; + jp.add(nnn,c); + + nnn = new JPanel(); + nnn.setLayout(new GridBagLayout()); + nnn.setBorder(BorderFactory.createBevelBorder(0)); + nnn.setBackground(new Color(250,255,200)); + nnn.setOpaque(true); + + pp = new PicPanel(n.getHashKeys()); + pp.setPreferredSize(new Dimension(n.getHashKeys().size()*32,60)); + pp.setBackground(new Color(250,255,200)); + + String hc = new String(n.getHashCode()); + if (hc.trim().length()>15) { + hc = hc.substring(0,15)+"..."; + } //end of if-else + + JMyLabel hash = new JMyLabel(n, hc); + + + + c.gridx=0; c.gridy = 0; + c.weightx=1.0; c.weighty= 0; + + nnn.add(hash,c); + c.gridx=1; c.gridy = 0; + c.weightx=0.0; c.weighty= 0; + + nnn.add(pp,c); + c.gridx=2; c.gridy = xx; + c.weightx = 0.0; + jp.add(nnn,c); + + JPanel abspanel = new JPanel(); + abspanel.setPreferredSize(new Dimension(150,40)); + abspanel.setBorder(BorderFactory.createBevelBorder(0)); + abspanel.setBackground(new Color(250,255,200)); + abspanel.setOpaque(true); + abspanel.setLayout(new FlowLayout()); + + if (n.getEmpfaenger().equals("") && n.getSended()==false ) { + String[] stringlist = new String[100]; + JComboBox cb = new JComboBox(kontakte.toArray(stringlist)); + + abspanel.add(cb); + + ImageIcon water = new ImageIcon("arrow.png"); + JMyButton button = new JMyButton(n, cb, water); + button.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + jBSend_ActionPerformed(evt); + } + }); + abspanel.add(button); + + } else { + abspanel.add(new JLabel("an "+n.getEmpfaenger())); + if (n.getStopped() && n.getSended()==false) { + ImageIcon water = new ImageIcon("arrow.png"); + JMyButton button = new JMyButton(n,null,water); + button.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + jBSend_ActionPerformed(evt); + } + }); + abspanel.add(button); + + + } else { + if (n.getRestzeit()>0) { + abspanel.add(new JLabel(" "+n.getRestzeit()+" sek")); + ImageIcon water = new ImageIcon("stop.png"); + JMyButton button = new JMyButton(n,null,water); + button.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent evt) { + jBStopped_ActionPerformed(evt); + } + }); + abspanel.add(button); + + + + } // end of if + } + } + c.gridx=4; c.gridy = xx; + c.weightx = 0.0; + jp.add(abspanel,c); + xx++; + } + JPanel dummy = new JPanel(); + dummy.setBorder(BorderFactory.createBevelBorder(0)); + dummy.setLayout(null); + dummy.setBackground(new Color(250,255,200)); + dummy.setOpaque(true); + dummy.setPreferredSize(new Dimension(150,60)); + + c.gridx=0; c.gridy = xx; + c.gridwidth=5; + c.fill = GridBagConstraints.BOTH; + c.weightx = 1.0; + c.weighty = 1.0; + jp.add(dummy,c); + + jp.revalidate(); + jp.repaint(); + } + + // Ende Methoden + + public static void main(String[] args) { + new ManInTheMiddle("ManInTheMiddle"); + } // end of main + +} // end of class ManInTheMiddle + diff --git a/Quellcodes/iud_key_rsachat/ManInTheMiddle.jfm b/Quellcodes/iud_key_rsachat/ManInTheMiddle.jfm new file mode 100644 index 0000000..7ac88a5 --- /dev/null +++ b/Quellcodes/iud_key_rsachat/ManInTheMiddle.jfm @@ -0,0 +1,355 @@ +object chatClient: TFGUIForm + Left = 332 + Top = 16 + BorderIcons = [biSystemMenu, biMinimize] + Caption = 'I:\PublicKey\PublicKey\ManInTheMiddle.jfm' + ClientHeight = 626 + ClientWidth = 1065 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsMDIChild + OldCreateOrder = True + Position = poDesigned + ShowHint = True + Visible = True + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnResize = FormResize + FrameType = 5 + Resizable = False + Undecorated = False + Background = clBtnFace + PixelsPerInch = 96 + TextHeight = 13 + object jPanel1: TJPanel + Tag = 12 + Left = 8 + Top = 8 + Width = 1041 + Height = 41 + Foreground = 3355443 + Background = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Border.BorderType = BevelBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clWhite + Border.BevelShadowColor = 4210752 + Border.Beveltype = 1 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + object jLabel2: TJLabel + Tag = 1 + Left = 8 + Top = 11 + Width = 62 + Height = 20 + Foreground = 3355443 + Background = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Text = 'Server' + HorizontalAlignment = LEFT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + object jTFAdress: TJTextField + Tag = 2 + Left = 56 + Top = 11 + Width = 150 + Height = 20 + Cursor = crIBeam + Foreground = 3355443 + Background = clWhite + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [] + HorizontalAlignment = LEFT + Text = 'localhost' + Editable = True + end + object jLabel3: TJLabel + Tag = 1 + Left = 232 + Top = 11 + Width = 62 + Height = 20 + Foreground = 3355443 + Background = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Text = 'Port' + HorizontalAlignment = LEFT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + object jBVerbinden: TJButton + Tag = 4 + Left = 936 + Top = 8 + Width = 99 + Height = 25 + Foreground = 3355443 + Background = 15658734 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + actionPerformed = 'jBVerbinden_ActionPerformed' + Text = 'Verbinden' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object jNFPort: TJNumberField + Tag = 21 + Left = 272 + Top = 11 + Width = 75 + Height = 20 + Cursor = crIBeam + Foreground = 3355443 + Background = clWhite + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [] + HorizontalAlignment = LEFT + Text = '44444' + Editable = True + end + end + object jTFNachricht: TJTextField + Tag = 2 + Left = 672 + Top = 320 + Width = 358 + Height = 20 + Cursor = crIBeam + Foreground = 3355443 + Background = clWhite + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [] + actionPerformed = 'jTFNachricht_ActionPerformed' + HorizontalAlignment = LEFT + Editable = True + end + object jBSend: TJButton + Tag = 4 + Left = 720 + Top = 254 + Width = 99 + Height = 25 + Foreground = 3355443 + Background = 15658734 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + actionPerformed = 'jBSend_ActionPerformed' + Text = 'Abschicken' + Mnemonic = 0 + DisplayedMnemonicIndex = 0 + Selected = False + BorderPainted = True + FocusPainted = False + ContentAreaFilled = True + HorizontalAlignment = CENTER + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + RolloverEnabled = False + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object jLabel5: TJLabel + Tag = 1 + Left = 8 + Top = 64 + Width = 62 + Height = 20 + Foreground = 3355443 + Background = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + mouseClicked = 'jLabel5_MouseClicked' + Text = 'Schl'#252'ssel' + HorizontalAlignment = LEFT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end + object jScrollPane1: TJScrollPane + Tag = 11 + Left = 96 + Top = 136 + Width = 953 + Height = 481 + Hint = 'jScrollPane1' + Foreground = 3355443 + Background = 15658734 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + HorizontalScrollBarPolicy = AS_NEEDED + VerticalScrollBarPolicy = ALWAYS + Autoscrolls = False + WheelScrollingEnabled = True + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object jScrollPane2: TJScrollPane + Tag = 11 + Left = 96 + Top = 64 + Width = 953 + Height = 57 + Hint = 'jScrollPane2' + Foreground = 3355443 + Background = 15658734 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + HorizontalScrollBarPolicy = AS_NEEDED + VerticalScrollBarPolicy = AS_NEEDED + Autoscrolls = False + WheelScrollingEnabled = True + Border.BorderType = NoBorder + Border.LineColor = clBlack + Border.LineThickness = 0 + Border.LineRounded = False + Border.EtchHighlightColor = clBlack + Border.EtchShadowColor = clBlack + Border.Etchtype = 0 + Border.BevelHighlightColor = clBlack + Border.BevelShadowColor = clBlack + Border.Beveltype = 0 + Border.MatteColor = clBlack + Border.MatteTop = 0 + Border.MatteLeft = 0 + Border.MatteBottom = 0 + Border.MatteRight = 0 + end + object jLabel4: TJLabel + Tag = 1 + Left = 8 + Top = 144 + Width = 86 + Height = 20 + Hint = 'jLabel4' + Foreground = 3355443 + Background = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Dialog' + Font.Style = [fsBold] + Text = 'Nachrichten' + HorizontalAlignment = LEFT + VerticalAlignment = CENTER + HorizontalTextPosition = RIGHT + VerticalTextPosition = CENTER + IconTextGap = 4 + DisplayedMnemonic = 0 + DisplayedMnemonicIndex = 0 + end +end diff --git a/Quellcodes/iud_key_rsachat/MessagePopup.java b/Quellcodes/iud_key_rsachat/MessagePopup.java new file mode 100644 index 0000000..27ca059 --- /dev/null +++ b/Quellcodes/iud_key_rsachat/MessagePopup.java @@ -0,0 +1,59 @@ +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; + +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuItem; +import javax.swing.JPopupMenu; +import javax.swing.*; + +public class MessagePopup extends JPopupMenu implements ActionListener { + + private static final long serialVersionUID = 1L; + + JMenuItem bmi, ami, emi, kmi, dmi1, dmi2, dmi3, vmi; + ChatClient cc; + Nachricht n; + + public MessagePopup( MouseEvent event, ChatClient cc, Nachricht n){ + this.cc = cc; + this.n = n; + // Submenu + + dmi1 = new JMenuItem("Hashcode berechnen"); + dmi1.addActionListener(this); + add(dmi1); + dmi2 = new JMenuItem("Hashcode prüfen"); + dmi2.addActionListener(this); + add(dmi2); + show(event.getComponent(), event.getX(), event.getY()); + } + + public void actionPerformed(ActionEvent e) { + + + if (e.getSource() == dmi1) { + n.generateHash(); + cc.updateNachrichtenListe(); + } + if (e.getSource() == dmi2) { + Nachricht dummy = new Nachricht("dummy","dummy",n.getInhaltString()); + dummy.generateHash(); + String ha2 = new String(dummy.getHashCode()); + String ha = new String(n.getHashCode()); + System.out.println(ha2+","+ha); + if(ha.equals(ha2)) { + JOptionPane.showMessageDialog(this, + "Der Hashcode der Nachricht stimmt mit dem übermittelten Hashcode überein", + "Bestätigung", + JOptionPane.INFORMATION_MESSAGE); + } else { + JOptionPane.showMessageDialog(this, + "Der Hashcode der Nachricht passt nicht zum übermittelten Hashcode.", + "Fehler", + JOptionPane.ERROR_MESSAGE); + } + } + } +} diff --git a/Quellcodes/iud_key_rsachat/MessagePopup2.java b/Quellcodes/iud_key_rsachat/MessagePopup2.java new file mode 100644 index 0000000..76b7712 --- /dev/null +++ b/Quellcodes/iud_key_rsachat/MessagePopup2.java @@ -0,0 +1,128 @@ +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.Dimension; + +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuItem; +import javax.swing.JPopupMenu; +import javax.swing.*; +import java.util.*; + +public class MessagePopup2 extends JPopupMenu implements ActionListener { + + private static final long serialVersionUID = 1L; + + JMenuItem bmi, ami, emi, kmi, dmi1, dmi2, dmi3, vmi; + ChatClient cc; + Nachricht n; + ArrayList keys; + + public MessagePopup2( MouseEvent event, ChatClient cc, Nachricht n, ArrayList keys){ + this.cc = cc; + this.n = n; + this.keys = keys; + + // Submenu + if (!n.getSended() && n.getInhaltString().startsWith("Key:")) { + ami = new JMenuItem("Schlüssel austauschen"); + ami.addActionListener(this); + add(ami); + } // end of if + if (!n.getSended()) { + emi = new JMenuItem("Nachricht verändern"); + emi.addActionListener(this); + add(emi); + + this.addSeparator(); + + } // end of if + dmi1 = new JMenuItem("Hashcode berechnen"); + dmi1.addActionListener(this); + add(dmi1); + dmi2 = new JMenuItem("Hashcode prüfen"); + dmi2.addActionListener(this); + add(dmi2); + show(event.getComponent(), event.getX(), event.getY()); + } + + public void actionPerformed(ActionEvent e) { + + if (e.getSource() == ami && !n.getSended()) { + n.setStopped(true); + + JComboBox cb = new JComboBox(); + for(Key k: keys) { + cb.addItem(k.getName()); + } // end of for + + + Object[] message = {"Wähle den Schlüssel, der eingesetzt werden soll.", cb}; + + JOptionPane pane = new JOptionPane( message, + JOptionPane.PLAIN_MESSAGE, + JOptionPane.OK_CANCEL_OPTION); + pane.createDialog(null, "Nachricht manipulieren").setVisible(true); + + int value = ((Integer)pane.getValue()).intValue(); + if(value == JOptionPane.OK_OPTION) { + String s = n.getInhaltString(); + String[] ss = s.split(",|="); + String ks = keys.get(cb.getSelectedIndex()).toString(ss[1]); + Nachricht nn = n.copy(); + nn.setInhalt(ks); + cc.nachrichten.add(cc.nachrichten.indexOf(n)+1,nn); + cc.updateNachrichtenListe(); + } // end of if + + + + } // end of if + + if (e.getSource() == emi && !n.getSended()) { + n.setStopped(true); + JTextArea mess = new JTextArea(n.getInhaltString()); + JScrollPane scrollPane = new JScrollPane(mess); + mess.setLineWrap(true); + mess.setWrapStyleWord(true); + scrollPane.setPreferredSize( new Dimension( 500, 200 ) ); + + Object[] message = {"Nachricht", scrollPane}; + + JOptionPane pane = new JOptionPane( message, + JOptionPane.PLAIN_MESSAGE, + JOptionPane.OK_CANCEL_OPTION); + pane.createDialog(null, "Nachricht manipulieren").setVisible(true); + + int value = ((Integer)pane.getValue()).intValue(); + if(value == JOptionPane.OK_OPTION) { + n.setInhalt(mess.getText()); + } // end of if + cc.updateNachrichtenListe(); + } + + if (e.getSource() == dmi1) { + n.generateHash(); + cc.updateNachrichtenListe(); + } + if (e.getSource() == dmi2) { + Nachricht dummy = new Nachricht("dummy","dummy",n.getInhaltString()); + dummy.generateHash(); + String ha2 = new String(dummy.getHashCode()); + String ha = new String(n.getHashCode()); + System.out.println(ha2+","+ha); + if(ha.equals(ha2)) { + JOptionPane.showMessageDialog(this, + "Der Hashcode der Nachricht stimmt mit dem übermittelten Hashcode überein", + "Bestätigung", + JOptionPane.INFORMATION_MESSAGE); + } else { + JOptionPane.showMessageDialog(this, + "Der Hashcode der Nachricht passt nicht zum übermittelten Hashcode.", + "Fehler", + JOptionPane.ERROR_MESSAGE); + } + } + } + } diff --git a/Quellcodes/iud_key_rsachat/MyServer.java b/Quellcodes/iud_key_rsachat/MyServer.java new file mode 100644 index 0000000..0cd3992 --- /dev/null +++ b/Quellcodes/iud_key_rsachat/MyServer.java @@ -0,0 +1,98 @@ +import java.net.ServerSocket; +import java.net.Socket; +import java.util.Scanner; +import java.io.PrintWriter; +import java.util.ArrayList; + +/** + * Die Klasse MyServer verwaltet einen ServerSocket. Sie erstellt einen ServerSocket an einem + * bestimmten Port und wartet dort auf Clients. Es können mehrere Clients gleichzeitig angemeldet sein. + * Eine Klasse, die diesen Server benutzt, muss MyServerSocketListener implementieren. Sie wird dann + * über die Methode neuerClient informiert, wenn sich ein neuer Client am Server angemeldet hat. + * Beschreibung + * + * + * @version 1.0 vom 15.11.2012 + * @author Thomas Schaller + */ + +public class MyServer extends Thread { + + // Anfang Attribute + private ServerSocket ss; + private int port; + private boolean aktiv = true; + private MyServerSocketListener listener; + // Ende Attribute + + /** Dieser Konstruktor erzeugt einen neuen ServerSocket, startet ihn aber nicht sofort. + * @param listener Klasse, die MyServerSocketListener implementiert und dann über neue Clients und eingehende Nachrichten informiert wird. + * @param port Port, den der ServerSocket abhört. + */ + + public MyServer(MyServerSocketListener listener, int port) { + this.port = port; + this.listener = listener; + try { + ss = new ServerSocket(port); + } catch(Exception e) { + System.out.println(e); + } // end of try + } + + // Anfang Methoden + /** Liefert den Port, den der Server abhört. + * @return Port + */ + public int getPort() { + return port; + } + + /** Startet das Abhören des Ports und das Annehmen der Clients + */ + public void starten() { + start(); + } + + /** Verwaltet das Annehmen der Clients (Diese Methode bitte nicht direkt aufrufen, sondern mit starten() aktivieren). + */ + public void run() { + aktiv = true; + try { + while(aktiv) { + System.out.println("Warte auf Client"); + Socket s = ss.accept(); + System.out.println("Client empfangen"); + MySocket ms = new MySocket(s, listener); + listener.neuerClient(ms); + } + } catch(Exception e) { + System.out.println(e); + } // end of try + + + } + + /** Bricht das Abhören des Ports ab. Es kann nicht wieder durch starten aktiviert werden. Dazu muss ein neuer Server erstellt werden. + */ + public void stoppen() { + aktiv = false; + try{ + ss.close(); + interrupt(); + } catch( Exception e) { + System.out.println(e); + } + } + + /** Meldet, ob der Server aktiv ist. + * @return true, falls der Server den Port abhört, sonst false. + */ + public boolean getAktiv() { + return aktiv; + } + + // Ende Methoden +} // end of Server + + diff --git a/Quellcodes/iud_key_rsachat/MySocket.java b/Quellcodes/iud_key_rsachat/MySocket.java new file mode 100644 index 0000000..a8d9309 --- /dev/null +++ b/Quellcodes/iud_key_rsachat/MySocket.java @@ -0,0 +1,196 @@ +import java.net.ServerSocket; +import java.net.Socket; +import java.util.Scanner; +import java.io.*; +import java.util.ArrayList; +import java.nio.charset.StandardCharsets; + + + +/** +* Die Klasse MySocket verwaltet eine Client-Server-Verbindung. Sie wartet auf eingehende Nachrichten und + * informiert ihren Listener, wenn eine Nachricht eingangen ist. Die Nachricht kann dann beim Socket abgeholt werden. + * Außerdem können Nachrichten in Form von Strings versendet werden. + * Der Listener wird außerdem informiert, wenn die Verbindung zusammengebrochen / beendet ist. + * Der Listener muss das Interface MySocketListener implementieren. + * + * + * @version 1.0 vom 15.11.2012 +* @author Thomas Schaller + */ + +public class MySocket extends Thread{ + + // Anfang Attribute2 + private boolean aktiv; + private Socket socket; + private BufferedReader eingang=null; + PrintWriter ausgang=null; + MySocketListener listener=null; + + // Ende Attribute2 + + /** Dieser Konstruktor erstellt einen MySocket aus einem schon vorhandenen Socket und ist für die Verwendung durch MyServer gedacht. + * @param s Socket, der durch MySocket verwaltet werden soll. + * @param listener Listener, der über eingehende Nachrichten und das Beenden der Verbindung informiert wird. Der Listener muss MySocketListener implementieren. + */ + public MySocket(Socket s, MySocketListener listener){ + this.socket = s; + this.listener = listener; + try { + eingang = new BufferedReader(new InputStreamReader(socket.getInputStream())); + ausgang = new PrintWriter(socket.getOutputStream()); + aktiv = true; + this.start(); + } catch(Exception e) {; + System.out.println(e); + e.printStackTrace(); + aktiv = false; + } // end of try + } + + /** Dieser Konstruktor erstellt einen neuen Socket. Er verbindet sich mit einem Server an der angegebenen Adresse unter dem angegebenen Port. Der Listener wird + * über eingehende Nachrichten und das Beenden der Verbindung informiert. + * @param address IP-Adresse oder Domain-Name des Servers + * @param port Portnummer, die der Server abhört + * @param listener Listener, der über eingehende Nachrichten und das Beenden der Verbindung informiert wird. Der Listener muss MySocketListener implementieren. + */ + public MySocket(String address, int port, MySocketListener listener) { + this.listener = listener; + try { + this.socket = new Socket(address, port); + eingang = new BufferedReader(new InputStreamReader(socket.getInputStream())); + ausgang = new PrintWriter(socket.getOutputStream()); + aktiv = true; + this.start(); + } catch(Exception e) { + System.out.println(e); + e.printStackTrace(); + aktiv = false; + } // end of try + } + + // Anfang Methoden2 + /** Verwaltet das Annehmen der Nachrichten (Diese Methode bitte nicht direkt aufrufen, sie wird automatisch gestartet). + */ + public void run(){ + try { + while (aktiv){ + if (listener != null && eingang.ready()) listener.nachrichtEmpfangen(this); + Thread.sleep(5); + } + } + catch (Exception e) { + if(socket!=null)try{socket.close();}catch(Exception ex){;} + System.err.println(e); + e.printStackTrace(); + } + aktiv = false; + if (listener != null) listener.verbindungBeendet(this); + + } + + + + + /** Liefert die eingangene Nachricht. Diese Methode bitte nur aufrufen, wenn der Listener über den Eingang einer Nachricht informiert wurde, da die Methode sonst bis + * zur nächsten eingehenden Nachricht wartet. + * @return Nachricht + */ + public String holeNachricht() { + try{ + + + if (aktiv && eingang.ready()) { + + String s = eingang.readLine(); + System.out.println(s); + byte[] b = Base64.decode(s); + /* for (int i = 0; i < b.length ; i++) { + System.out.print(b[i]); + System.out.print(" "); + } // end of for + System.out.println("");*/ + + return s; + } // end of if + } + catch(Exception e) { + e.printStackTrace(); + + return null; + } + + + return null; + } + + /** Versendet eine Nachricht an den Server. + * @param nachricht Zu sendender Text. + */ + public void sendeNachricht(String nachricht) { + try { + //byte[] b = nachricht; + /* for (int i = 0; i < b.length ; i++) { + System.out.print(b[i]); + System.out.print(" "); + } // end of for + System.out.println("");*/ + //ausgang.println(Base64.encode(nachricht)); + ausgang.println(nachricht); + // System.out.println(Base64.encode(nachricht)); + ausgang.flush(); + } catch(Exception e) { + System.out.println(e); + e.printStackTrace(); + if (listener != null) listener.verbindungBeendet(this); + aktiv = false; + } + } + + /** Bricht eine bestehende Client-Server-Verbindung ab. + */ + + public void trenneVerbindung() { + aktiv = false; + if (socket != null) { + try { + socket.close(); + } catch(Exception e) { + System.out.println(e); + e.printStackTrace(); + } + + } // end of if + socket = null; // end of try + } + + /** Liefert den Socket der Verbindung. Kann benutzt werden, um dann aus dem Socket weitere Informationen wie IP-Adressen oder Portnummern zu ermitteln. + * @return Socket, der Verbindung. + */ + public Socket getSocket() { + return socket; + } + + /** Liefert den Status der Verbindung. + * @return true, falls die Verbindung noch aktiv ist, sonst false. + */ + public boolean isAktiv() { + return aktiv; + } + + /** Räumt alles auf, damit der Thread nicht weiterläuft (bitte nicht aufrufen). + */ + public void finalize() { + // Schließen der Streams und des Sockets, wenn + // die Verbindung gelöscht wird wird + try { + trenneVerbindung(); + } + catch(Exception e) { + System.out.println(e); + e.printStackTrace(); + } + } + // Ende Methoden2 +} diff --git a/Quellcodes/iud_key_rsachat/MySocketListener.java b/Quellcodes/iud_key_rsachat/MySocketListener.java new file mode 100644 index 0000000..7bef539 --- /dev/null +++ b/Quellcodes/iud_key_rsachat/MySocketListener.java @@ -0,0 +1,19 @@ +import java.net.ServerSocket; +import java.net.Socket; + +/** + * Listenerdefinitionen für MyServer und MySocket. + * Klassen, die mit diesen beiden Klassen arbeiten müssen diese Listener implementieren. + * + * @version 1.0 vom 15.11.2012 + * @author Thomas Schaller + */ + +interface MySocketListener { // Der Listener wird über folgendes informiert... + void nachrichtEmpfangen(MySocket s); // am Socket ist eine Nachricht eingegangen. Diese kann dann mit s.holeNachricht() abgeholt werden. + void verbindungBeendet(MySocket s); // die Verbindung wurde beendet oder ist zusammengebrochen. +} + +interface MyServerSocketListener extends MySocketListener { + void neuerClient(MySocket s); // ein neuer Client hat sich mit dem Server verbunden. +} \ No newline at end of file diff --git a/Quellcodes/iud_key_rsachat/Nachricht.java b/Quellcodes/iud_key_rsachat/Nachricht.java new file mode 100644 index 0000000..f1af9d4 --- /dev/null +++ b/Quellcodes/iud_key_rsachat/Nachricht.java @@ -0,0 +1,183 @@ +/** + * + * description + * + * @version 1.1 from 30.01.2020 + * Änderungen: Hash-Funktion verbessert, damit ähnliche Texte nicht so ähnliche Hashes bekommen + * @author + */ + + import java.util.ArrayList; + import java.security.MessageDigest; + import java.nio.charset.StandardCharsets; + +public class Nachricht { + + // Anfang Attribute + private byte[] inhalt; + private String absender; + private String empfaenger; + private ArrayList keys; + private ArrayList hashKeys; + private byte[] hashCode; + private long time; + private boolean stopped; + private boolean sended; + // Ende Attribute + + public Nachricht(String absender, String empfaenger, String inhalt) { + setInhalt(inhalt); + this.absender = absender; + this.empfaenger = empfaenger; + this.keys = new ArrayList(); + this.hashKeys = new ArrayList(); + this.hashCode = ("").getBytes() ; + this.time = System.currentTimeMillis(); + this.stopped = false; + this.sended = false; + } + + public Nachricht(String absender, String empfaenger, byte[] inhalt, byte[] hashCode) { + this.inhalt = inhalt; + this.absender = absender; + this.empfaenger = empfaenger; + this.keys = new ArrayList(); + this.hashKeys = new ArrayList(); + this.hashCode = hashCode; + this.time = System.currentTimeMillis(); + this.stopped = false; + this.sended = false; + + } + + public Nachricht(String absender, String empfaenger, String inhalt, ArrayList keys, ArrayList hashKeys) { + setInhalt(inhalt); + this.absender = absender; + this.empfaenger = empfaenger; + this.keys = (ArrayList)keys.clone(); + this.hashKeys = (ArrayList) hashKeys.clone(); + this.hashCode = ("").getBytes() ; + this.time = System.currentTimeMillis(); + this.stopped = false; + this.sended = false; + + } + + public Nachricht(String absender, String empfaenger, byte[] inhalt, byte[] hashCode, ArrayList keys, ArrayList hashKeys) { + this.inhalt = inhalt; + this.absender = absender; + this.empfaenger = empfaenger; + this.keys = (ArrayList)keys.clone(); + this.hashKeys = (ArrayList) hashKeys.clone(); + this.hashCode = hashCode; + this.time = System.currentTimeMillis(); + this.stopped = false; + this.sended = false; + } + + // Anfang Methoden + public String getInhaltString() { + return new String(inhalt); + } + + public byte[] getInhalt() { + return inhalt; + } + + + public void setInhalt(String inhalt) { + this.inhalt = inhalt.getBytes(); + } + + public void setInhalt(byte[] inhalt) { + this.inhalt = inhalt; + } + + public String getAbsender() { + return absender; + } + + public void setAbsender(String absender) { + this.absender = absender; + } + + public String getEmpfaenger() { + return empfaenger; + } + + public void setEmpfaenger(String empfaenger) { + this.empfaenger = empfaenger; + } + + public Nachricht copy() { + Nachricht n = new Nachricht(absender, "", inhalt, hashCode, keys, hashKeys); + return n; + } + public void addKey(Key k) { + + keys.add(k); + } + + public ArrayList getKeys() { + + return keys; + } + + public void addHashKey(Key k) { + + hashKeys.add(k); + } + + public ArrayList getHashKeys() { + + return hashKeys; + } + + public void generateHash() { + try{ + MessageDigest digest = MessageDigest.getInstance("SHA-256"); + hashCode = Base64.encode(digest.digest(getInhaltString().getBytes(StandardCharsets.UTF_8))).substring(0,10).getBytes(); + + } catch(Exception e) { + System.out.println(e); + hashCode = new byte[0]; + } + + } + + public byte[] getHashCode() { + return hashCode; + } + + public void setHashCode(byte[] hashCode) { + this.hashCode = hashCode; + } + + public int getRestzeit() { + if (sended || stopped) { + return 0; + } // end of if + return 10 - (int) ((System.currentTimeMillis()-this.time)/1000); + } + + + + public boolean getSended() { + return sended; + } + + public void setSended(boolean s) { + sended = s; + } + + + public boolean getStopped() { + return stopped; + } + + public void setStopped(boolean s) { + stopped = s; + } + // Ende Methoden + +} diff --git a/Quellcodes/iud_key_rsachat/PicPanel.java b/Quellcodes/iud_key_rsachat/PicPanel.java new file mode 100644 index 0000000..140fb67 --- /dev/null +++ b/Quellcodes/iud_key_rsachat/PicPanel.java @@ -0,0 +1,53 @@ +import java.awt.Graphics; + import java.awt.image.BufferedImage; + import java.io.IOException; + import java.net.URL; + import javax.imageio.ImageIO; + import javax.swing.*; + import java.util.*; + import java.awt.FontMetrics; + import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; + + + //pic erbt von Panel - spart eine Klasse +public class PicPanel extends JPanel { + + ArrayList keys; + + + public PicPanel(ArrayList keys){ + + this.keys = keys; + + + } + + public void drawCenteredString(String s, int xx, int yy, Graphics g) { + FontMetrics fm = g.getFontMetrics(); + int x = xx- fm.stringWidth(s) / 2; + g.drawString(s, x, yy); + } + + //paintComponent überschreiben, Image zeichnen, super-Aufruf nicht vergessen + @Override + protected void paintComponent(Graphics g) { + super.paintComponent(g); + for (int x = 0; x < keys.size(); x++) { + g.drawImage(keys.get(x).getImage(),x*32,2,this); + drawCenteredString(keys.get(x).getName(),x*32+16,50,g); + } + + } + + public String getToolTipText(MouseEvent evt) { + int k = evt.getX() /32; + if (keys.size()>k) { + return "

Exponent:
"+keys.get(k).getE()+"

Modul:
"+keys.get(k).getN()+"

"; + } // end of if + return "Schlüsselspeicher"; + } + + + +} diff --git a/Quellcodes/iud_key_rsachat/RSA.java b/Quellcodes/iud_key_rsachat/RSA.java new file mode 100644 index 0000000..12c5c9f --- /dev/null +++ b/Quellcodes/iud_key_rsachat/RSA.java @@ -0,0 +1,130 @@ +/** + * + * Beschreibung + * + * @version 1.0 vom 14.01.2016 + * @author + */ + +import java.io.IOException; +import java.math.BigInteger; +import java.util.Random; + +public class RSA { + + // Anfang Attribute + private int SIZE = 1024; + private int BLOCKSIZE = 2; + private BigInteger n; + private BigInteger p, q; + private BigInteger PhiN; + private BigInteger e, d; + + // Ende Attribute + + public RSA() { + + generateKey(); + } + + public RSA(int bits) { + SIZE = bits; + generateKey(); + } + + // Anfang Methoden + + public BigInteger getN() { + return n; + } + + + public void setN(BigInteger n) { + this.n = n; + } + + public void generateKey() { + /* Step 1: Select two large prime numbers. Say p and q. */ + p = BigInteger.probablePrime(SIZE, new Random()); + q = BigInteger.probablePrime(SIZE, new Random()); + /* Step 2: Calculate n = p.q */ + n = p.multiply(q); + /* Step 3: Calculate ø(n) = (p - 1).(q - 1) */ + PhiN = p.subtract(BigInteger.valueOf(1)); + PhiN = PhiN.multiply(q.subtract(BigInteger.valueOf(1))); + /* Step 4: Find e such that gcd(e, ø(n)) = 1 ; 1 < e < ø(n) */ +/* do { + e = new BigInteger(2 * SIZE, new Random()); + } while ((e.compareTo(PhiN) != 1) + || (e.gcd(PhiN).compareTo(BigInteger.valueOf(1)) != 0)); + */ + /* Als e wird in der Praxis immer 65537 verwendet*/ + e = BigInteger.valueOf(65537); + /* Step 5: Calculate d such that e.d = 1 (mod ø(n)) */ + d = e.modInverse(PhiN); + } + + + + + public Key getPublicKey() { + return new Key("Ö",e,n); + } + + public Key getPrivateKey() { + return new Key("P",d,n); + } + + public static Key getPublicKeyZert() { + return new Key("ZS",new BigInteger("92020722032510237098687730821345002475852926519687505393637258322619905644760889379395080699744916048107242925967027699181978133434386836838764269376892530783630654811456718501622805"+ + "0429691604569763800205767093030273564571085665400962405818664165449303338714877264756844232275146244572923302600861123085509774896697571445612708416287450226532029033236047907922857453176065518750862719489230457831441"+ + "7173388889137991463283210462111428501392067084189267999492753829846440287839192599579471258088572439889541316908031255266831632514679577179417418047234941358616454031601382865835722476368628684965351829298264441751183"+ + "4765538945638034868762252381408904028140439409187378031978842476147164936819798249655054427494851690069200746638913551812853454469432164195272770583598350122258729847670066946154048177957396760843403465486329401836814"+ + "9990639814827911842782103318445952572226732629881400041393595241900643703238957157012120488385905509895908742240747739986701990654721595793098375922165943034668657422624955521278896354123265004069921640297875759614496"+ + "742155179442639630932330086817709676636648111414906681085732877503585719166804978513181384327884382400889164642851924835156763044152821991745397448110186145769503874106711784628283015"), + new BigInteger("5139848029926993084030177297754816256127765376419362760006875069769259661872914759939556724394537974685918407976961929857609117001554132888941990323118389734140650301936109978057312726558318809808688530"+ + "99773725611495268508136211646337118765334983074807622287602613120954964306249607670374637031866390157648764929632399710705078606495073542059188462314599000331802944594967393118351191103705051281495305712977081775868511"+ + "76669514447588704897250963384817831024230705289577095855693680350648450932456258694411608347436126446258894555954026134724123826545582729849892381402885181473492517034956094364025058973837607228431208754049905489662832"+ + "09739142470309153125447402018234554037154608185773467018511970065694249410104669788842146660693780223399943991335490758657838309774214025815008528258836495746672516751271291457802304100684624522436687990982028305751185"+ + "48926383285704725365240957188638904019694020065564925826265319075541291979464737277137720345398870073684194532135223107690328725385189503977019793221936587592861157513836453534572733867521266351697630143131367971098119"+ + "501251155238775343770355444640289263220749122642671050995480950737812740946324944965924224677968141284858329942830891138365556546396148300565405098100850501841")); + } + public static Key getPrivateKeyZert() { + return new Key("ZSP", new BigInteger("88405792460374902093708496634850741322105940917351683868541504012830882621245768251091372013156643395250448929783142177860165402492647945415104962343917444383622605496273629917298"+ + "610236655119004745619089104384026215301496147234635587743965575319499761064848213230757151103779005504514500023252356175847116728347255176088139236137082826628487749466300296767988898076628975938940677076738206736367"+ + "124996756783169958055053177519677571981271713255438344078311774536073940876121321362816462939120383991608570431036543882874480977769541084535126636925352742738338245898199820269860018114420772543302483230833480292931"+ + "352334730109447074945409204173176619699849050721926499420093861285836519963502042472293474805213779251720392591031533706581969617690636531135793143059665641797414237435624262623024366515969141242459029652395794721850"+ + "8436689537023284104630131792447652257617740873015159381631615655581919939509498869888015294276578911842474036086993469464623230276020243502751167826145879239288526145360234428912097606211745547385659522887117076882491"+ + "04675147998869220229602216434114268798658103586693108736443392251539998599980668517520134276984180168498165513964507909008004400364235467465743076136818915438381335591270604629182883277111"), + new BigInteger("5139848029926993084030177297754816256127765376419362760006875069769259661872914759939556724394537974685918407976961929857609117001554132888941990323118389734140650301936109978057312726558318809808688530"+ + "99773725611495268508136211646337118765334983074807622287602613120954964306249607670374637031866390157648764929632399710705078606495073542059188462314599000331802944594967393118351191103705051281495305712977081775868511"+ + "76669514447588704897250963384817831024230705289577095855693680350648450932456258694411608347436126446258894555954026134724123826545582729849892381402885181473492517034956094364025058973837607228431208754049905489662832"+ + "09739142470309153125447402018234554037154608185773467018511970065694249410104669788842146660693780223399943991335490758657838309774214025815008528258836495746672516751271291457802304100684624522436687990982028305751185"+ + "48926383285704725365240957188638904019694020065564925826265319075541291979464737277137720345398870073684194532135223107690328725385189503977019793221936587592861157513836453534572733867521266351697630143131367971098119"+ + "501251155238775343770355444640289263220749122642671050995480950737812740946324944965924224677968141284858329942830891138365556546396148300565405098100850501841")); + } + + // Ende Methoden + public static void main(String[] args) { + RSA r = new RSA(2048); + Key o = r.getPublicKey(); + Key p = r.getPrivateKey(); + + /*BigInteger i = new BigInteger("2237891328923"); + System.out.println(i.toString()); + byte[] b = o.convert(i); + BigInteger j = o.convert(b); + System.out.println(j.toString()); + + System.out.println(new String(o.encrypt(("Hallo").getBytes()))); + System.out.println("------------"); + System.out.println(new String(p.encrypt(o.encrypt(("Hallo").getBytes())))); + */ + System.out.println(o.getE()); + System.out.println("---"); + System.out.println(p.getE()); + System.out.println("---"); + System.out.println(o.getN()); + + } + } // end of RSA diff --git a/Quellcodes/iud_key_rsachat/TestRSA.java b/Quellcodes/iud_key_rsachat/TestRSA.java new file mode 100644 index 0000000..a98fca7 --- /dev/null +++ b/Quellcodes/iud_key_rsachat/TestRSA.java @@ -0,0 +1,25 @@ +/** + * + * description + * + * @version 1.0 from 20.01.2016 + * @author + */ + + import java.io.IOException; +import java.math.BigInteger; +import java.util.Random; +public class TestRSA { + + public static void main(String[] args) { + RSA rsa = new RSA(); + Key k1 = rsa.getPublicKey(); + Key k2 = rsa.getPrivateKey(); + System.out.println("Keys generiert"); + BigInteger i = BigInteger.valueOf(100); + BigInteger j = k1.encrypt(i); + BigInteger z = k2.encrypt(j); + System.out.println(i.toString()+"\n"+j.toString()+"\n"+z.toString()); + System.out.println(k1.encrypt(k2.encrypt("Hallo Leute, dies ist ein langer Text")).trim()); + } +} diff --git a/Quellcodes/iud_key_rsachat/TestRSA2.java b/Quellcodes/iud_key_rsachat/TestRSA2.java new file mode 100644 index 0000000..875c92d --- /dev/null +++ b/Quellcodes/iud_key_rsachat/TestRSA2.java @@ -0,0 +1,186 @@ +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.NoSuchAlgorithmException; +import java.security.PrivateKey; +import java.security.PublicKey; + +import javax.crypto.Cipher; + +/** + * @author JavaDigest + * + */ +public class TestRSA2 { + + /** + * String to hold name of the encryption algorithm. + */ + public static final String ALGORITHM = "RSA"; + + /** + * String to hold the name of the private key file. + */ + public static final String PRIVATE_KEY_FILE = "C:/keys/private.key"; + + /** + * String to hold name of the public key file. + */ + public static final String PUBLIC_KEY_FILE = "C:/keys/public.key"; + + /** + * Generate key which contains a pair of private and public key using 1024 + * bytes. Store the set of keys in Prvate.key and Public.key files. + * + * @throws NoSuchAlgorithmException + * @throws IOException + * @throws FileNotFoundException + */ + public static void generateKey() { + try { + final KeyPairGenerator keyGen = KeyPairGenerator.getInstance(ALGORITHM); + keyGen.initialize(1024); + final KeyPair key = keyGen.generateKeyPair(); + + File privateKeyFile = new File(PRIVATE_KEY_FILE); + File publicKeyFile = new File(PUBLIC_KEY_FILE); + + // Create files to store public and private key + if (privateKeyFile.getParentFile() != null) { + privateKeyFile.getParentFile().mkdirs(); + } + privateKeyFile.createNewFile(); + + if (publicKeyFile.getParentFile() != null) { + publicKeyFile.getParentFile().mkdirs(); + } + publicKeyFile.createNewFile(); + + // Saving the Public key in a file + ObjectOutputStream publicKeyOS = new ObjectOutputStream( + new FileOutputStream(publicKeyFile)); + publicKeyOS.writeObject(key.getPublic()); + publicKeyOS.close(); + + // Saving the Private key in a file + ObjectOutputStream privateKeyOS = new ObjectOutputStream( + new FileOutputStream(privateKeyFile)); + privateKeyOS.writeObject(key.getPrivate()); + privateKeyOS.close(); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + /** + * The method checks if the pair of public and private key has been generated. + * + * @return flag indicating if the pair of keys were generated. + */ + public static boolean areKeysPresent() { + + File privateKey = new File(PRIVATE_KEY_FILE); + File publicKey = new File(PUBLIC_KEY_FILE); + + if (privateKey.exists() && publicKey.exists()) { + return true; + } + return false; + } + + /** + * Encrypt the plain text using public key. + * + * @param text + * : original plain text + * @param key + * :The public key + * @return Encrypted text + * @throws java.lang.Exception + */ + public static byte[] encrypt(String text, PublicKey key) { + byte[] cipherText = null; + try { + // get an RSA cipher object and print the provider + final Cipher cipher = Cipher.getInstance(ALGORITHM); + // encrypt the plain text using the public key + cipher.init(Cipher.ENCRYPT_MODE, key); + cipherText = cipher.doFinal(text.getBytes()); + } catch (Exception e) { + e.printStackTrace(); + } + return cipherText; + } + + /** + * Decrypt text using private key. + * + * @param text + * :encrypted text + * @param key + * :The private key + * @return plain text + * @throws java.lang.Exception + */ + public static String decrypt(byte[] text, PrivateKey key) { + byte[] dectyptedText = null; + try { + // get an RSA cipher object and print the provider + final Cipher cipher = Cipher.getInstance(ALGORITHM); + + // decrypt the text using the private key + cipher.init(Cipher.DECRYPT_MODE, key); + dectyptedText = cipher.doFinal(text); + + } catch (Exception ex) { + ex.printStackTrace(); + } + + return new String(dectyptedText); + } + + /** + * Test the EncryptionUtil + */ + public static void main(String[] args) { + + try { + + // Check if the pair of keys are present else generate those. + if (!areKeysPresent()) { + // Method generates a pair of keys using the RSA algorithm and stores it + // in their respective files + generateKey(); + } + + final String originalText = "Text to be encrypted. Dies ist ein längerer Text."; + ObjectInputStream inputStream = null; + + // Encrypt the string using the public key + inputStream = new ObjectInputStream(new FileInputStream(PUBLIC_KEY_FILE)); + final PublicKey publicKey = (PublicKey) inputStream.readObject(); + final byte[] cipherText = encrypt(originalText, publicKey); + + // Decrypt the cipher text using the private key. + inputStream = new ObjectInputStream(new FileInputStream(PRIVATE_KEY_FILE)); + final PrivateKey privateKey = (PrivateKey) inputStream.readObject(); + final String plainText = decrypt(cipherText, privateKey); + + // Printing the Original, Encrypted and Decrypted Text + System.out.println("Private Key"+privateKey); + System.out.println("Original: " + originalText); + System.out.println("Encrypted: " +cipherText.toString()); + System.out.println("Decrypted: " + plainText); + + } catch (Exception e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/Quellcodes/iud_key_rsachat/arrow.png b/Quellcodes/iud_key_rsachat/arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..88de6285acf6fff563ccf620a9f1bc1d7fa8d6d8 GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9G0)*#H-ePopxP_V|+ z#WAE}&eF@#d<_abE*H6_H^1wd%c*@>-q&Yqu+VSjlS|s&85(XHxUAe0xA?4^_%T7n zuZH)HRG5RFXn#J?8<5#>oSVvm8=4~67`Egvvi2;xe_W$ij#2w8+d;vw*~$sx wXCJ&f%Dni+^&h8JbNB9eRP)e$RqWr@!f}tyL@xBc1G$mG)78&qol`;+08$S~{{R30 literal 0 HcmV?d00001 diff --git a/Quellcodes/iud_key_rsachat/key0.png b/Quellcodes/iud_key_rsachat/key0.png new file mode 100644 index 0000000000000000000000000000000000000000..0cd28da6b8ed4cc8dcfbe7898dffca2b2a1e6460 GIT binary patch literal 984 zcmV;}11J26P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L00TY%00TY&rhd=B00007bV*G`2jBq{ z5e^6_;0zc500US_L_t(o!^M|NXjE4i$N%3sb2F2%NlYN9mDnKGL>G!EDe6MOM+>Ek zf@oYQKBFt43l#;?h0tmhcM75|iXiv`?WWjZ5wta}NNN&ag;a;ML=vmsN#@SnbI!|KVeWVx51hrl_j~-ld;aG|2-&Xv(AySsbSo*$Q!$m~fd3<+b`d$cVAUtr!^Wdx z4KIIxuc3BQWoNuf*8va!L=1=m0EjS%jkM2SIb~Vo0B84fHB6paopO>&h(VSiVuk!H zBUziT%AwIY_^yo)*1G}nISNbvuM|TWA z4>nsy!|U%t1Oh+`Gok{hEEKL~2)q290Yhl4j%`jrL^_fo@U#547#TBrgy^lw0l*I! zfzOX30m!CJM_@#X6_r*10tPdFj0B+T=O=spY(Tl3Eear$HsZu}`=YgtPa*->cWp^; zU$=V<0pPhlGHHX{uz~0LZ|eep22+{!kuSw(cK!KN@Iq@eoIZGBjPSQz8%P|#ACTseen+QRot z`#(MD{;&W#jPcTG>jp^Cf^l{6@dQ9558$N@Y9=JU`tqCRtM7FP+K#te`uD!uYCH=b zH56h6Vnm~arouXGJ^9(qhc}*X%nqBv=^$kR0Dz6h=AO#9!9}G$5C8yFB-CwC4=1biWB}kdf1rFC z=zlo$`|B+^5P{7f*;Ls8{_0L$&7@5}0KZ$TlAI3RTruFK?Z|#0c@0omMVK2lw_*+n z!1C%o;FS_bmkRLFVDstv+K(4I3Dx_!$6fRF&Y3->#CZvp{gmf*aSDt80000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L00TY%00TY&rhd=B00007bV*G`2jBr5 z2Ob*HQ=pXq00izyL_t(o!>yNFY*bYghQGDXOfQ3_Tx<%|LW9ahjfjvUD#1WNq7M>8 ztcj2eAfO^95=|8FN&+GX#sm^0Jn$e1f(e3Pkf6XIEh2Ig0kOr&Ah(vwOqprt%-PF_ zUZ@3Pr=6XghnZP>t#7aW?|+{W(j2?iR?hJGoiZ^DH9ixtDSKH&cBtygN1yK#N;jXh zHSpU{{wVI+Gxtz-p3@CbK*WL?08}kvUEMK!QtvSt2Ux%0XmQbfox}csQL%_;QT0@k zb(TP$gJ)64AZoy?*OS91^&Zex0MnMBg1&)6{(w<+RRDDi;UnA62S!dQkrScn>FTL? z7SvUoZ0WymefZ;y0c>1&Y)0pT>~3Na6~VKJ8s3@tWoZIn^0L9JYp>M*0-z$O1##r9 zi~)2m$S(6dRnOk|&gYl@En{*z`Fk{f@D$^Nz3cuiYYTv{4KYJoYQ-_ASFZ~WZjZ!s z{7%L7tErbfOL5chDuMuF7?>%5+}6VNENY{6v5Q6JW*vL=iikKF*@9%9tx{KSIz1|K z%i;jZlqHq4XEFj%7jr98u4-FFuC@9!F2895eRMG6wpB=ML_{dJc_G0jUnhgBiEtb#EX3zGQIMC&dxH%{=vz zR^rj*gJWjido-g?2=Kz9LF119cxjHC@I+K;{kRFQ;^z&KF6k6c3jpBckuzUA{+kzX zEt-{M>fYS=*tK+T!?XZO#}1h2&$@YvF$nNP#fEU#bOC(n1n1^E{XC0G3k_Hc#(<}m zs~Vljn#Xq{Is_O7QVe<;WIu2KI0?7}LtfetZVk=FRrEH+71RL+0{QLIz>F_S zH~n)WTIMD^tmQ@_D>oV{t(LC}>d_~!huqV-7{@rEH=Na^E1FrWhn1h&TQjZhy8Hjz zr+`gS7${)nBXij@W(h@sg7%++rZH{RkTvmW>KoH~woQSycyX{vdgb+GBuASUX}KZ`@yoFcP^Xvw5y$6yHVm@k;qJBDLombt3Ka zfmUO=ioB~Si=|;j4|VUSBMJveQKtg#@a0n0cQjig`*^)#1!tlW5JwRa8jo>@I*?zO zJ5{}ge0O?XIDGjulXrhaRqPzI`ai>qcaLRTq?|bwpYhkVFo;8AaS*BLPzN?GIle5A z=M<$}#d=CFTZplo*c=WGsC5(iY3XdamaJuV`En|w&BdE;(XBvrhdOZnRPFvIyGyB( z?dCAV_rQlh@~88^$%LKrH5ghhXDZUue%3)eo?U6_Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L00TY%00TY&rhd=B00007bV*G`2jBq{ z5eFFLm8UfT00WarL_t(o!^M?bXdGn}$N%S>nZ0$h-EJZn!i$voIfS8$yl>-t6KwwrbxpF46u77ZQ%K=V&@qY5b{`FJgNSr;_ zCT5RaPb0e`u{s(8v%@5G(zFm{#k{(%f3UAv0MU$5?>%>og(5L_r9}WUQ)ue=PrpYt zZW*NPub1|?o<^)ZxUvKz*wK6a^2j?a%fQIjAMV?9f8P<;t%8|BAi#(}pIo2%ylyjk z`qbI(J3=Z z(3?n73ZS`Yh}f%Iujg-Eu(d$PXvv)3tEpm==f2k>Bihgs0A>y^CSvxuTFSo-L(D3{ArsX9#o+%iiX2^*OWTb|9gOo%=^I(#^_>E8XW#}GtdFu+Uglv1qgg8s}G zlG}C;-7FLeu|y(awM2@)Joetmz~G+2d!{=2>4|K-emDU9+u^zB+o}0!^+(KmYMXzW}-)<6_BvxYoDa zI9xY^uq+E@yP6r#P5$K$lA5v6sxEO>+Xoz-^^z1pokG|I4o(EtO}! zqB#X@F8~09f`O-aHu~8NpsfI=Rc4}E^oqIt8Bj{SOGN))270=?hLmEc*Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L00TY%00TY&rhd=B00007bV*G`2jBr5 z2OkR6|ADXo00kyVL_t(o!>w0sY*S?ve$KtOTU**PyUnr9jtOLA4urtuBY}X-0h1pR zgRzNVvZ+K23=#jSQPjkbIDy105)};+A|a@NFrv#etjI>tY`|C$XvgR>Cs5M$W8Lk& z@A1dl(GC)}u5WUG+}@LWo^#G~p68Y@&eL`7$i~b}#R;McMaeMhn(C7zY7znskIt%g zjrV;t*1+Zy-#Lm3bK1?8EIUBV%)}xJk_-TWS!krGgH6Td)m3Q+aQKHW9COR3_n6FC ztZQLn)>+eK3P)5-wiv-2Ws($HT8^I0&ow>)5G2_Eq3bA`SxIT>Ku)&RDHzPmBfrTqN)uyjHp`TFEkaWvD;aQK zIPM$^0A&nKssQM2HAJir4ZPETqa!S5SlfdBo3F?s;NZK@hbtp0OA7#IHjPHatn*N? z|6`yZ5&=AFlB%jgl1NU=2sBOiXj=4M?hwVQrF%#fjjD)5qTOi$;PZ#tw5ZBs6%0ut zL{$}n#j&&i_~Z2XcSE5NMTVkd0&vG4WV6Z8R5pKYf7*oT`@QuI6?0~6(sYJI1O@|q zZ=4W<6-A=HexIXqO|94G^V#fn`#@Tx_~8ECCl}2tT_s7xNn4S?S5=MDtvi9o7cO&N z005uQmtnWt)d?#h06f2b>*~hlzv>1fDls!gU*W-_wta`2v*O7C;6cg91polfcXb~! zD9Zg-l}*Ns$c`QL{_(n@GM?boPtIFsFvt)hnE(PzLwa<1`N4ISo#DO`01E+f0DKjo zvjENkxC|hQ8ke3jfUL=ul9(osaNzHN7hA9XgzJ$z0HGhSz#- zb_p-dn?r?@a$!+Sa89el3GW$fZQF(J0WUx@gNVS%#+q^mgb+I=NkX1tMThSyHk|qZ zo{h#w-t45yK&9m1CWeZa)9V|S~^gepHnLYqbSpkV%dgcJuV7H2l?{_ zo5`;RvAK08+yf)Yo<=@i6ld@C7%J1 zC*Y0GoB<{<{sYk})VSIwJc6!k-m`HwF*9Z>4`WHzv^r*S+Y{&|PoS3p;#dfQ;Rdjd zKphj-0RXsk`9||VAQa=m@PCB^W$S+j(J}yyv2R9-so?<-RiXBD3)i%8S^(_%@|&Cf zKzPItV(!SOadiS%3!=3E8US7a;6>E9+-b4nq%{nL&p8Tm<_p0Px*#G9BdR^E0yq-8 z9(d$b0qD}C{n>Wga+AsIzS!m7@YI^x&Q#v>KNS2&)8e@xxBvhE07*qoM6N<$f?4I2 A;{X5v literal 0 HcmV?d00001 diff --git a/Quellcodes/iud_key_rsachat/key2.png b/Quellcodes/iud_key_rsachat/key2.png new file mode 100644 index 0000000000000000000000000000000000000000..0dfe11ebfd2bb4001c2a6816f376ecff0526bfbd GIT binary patch literal 999 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L00TY%00TY&rhd=B00007bV*G`2jBq{ z5ez9-zkb9300U=9L_t(o!^M_OXjE4e$N%Tvmp7B?jF_ZmGD&73wH@oCbP=tHND$MC zth}dE?7?;c*|2^YMHCbMLvA5O7?WxqB#XS^Y%lv4xCzM&Fkt1~r?3J*kc> zLE}-ah9@U(r#G)ljI~AVRsd`mq}aeB0YPBjFu7U}?oK89LI?Qfj~nUU6`@d28Zpbt4BeYO9-0D2vlEBC;*1Jxw>qI!S`M7SY^V>QP3Kagbbwwt~OJy)~nVI z5j`<^(MRK?%aNQ(er;6 zk2_#v0RSLo$u~_YxiZfIAn$rC02l^LQ32gh0A@Z(rTd?L9srvX@sD-s94IxT#sM53 zpE%JPvAY1kXH&Hq8UXP7{NiZ&NM`>luSGJ&ehFEnuUH{_q{DSMD zTmoGz12uFJE_m*>CQ-bbXl4*mp`JLhUVvOj=h;YCcW? literal 0 HcmV?d00001 diff --git a/Quellcodes/iud_key_rsachat/key2s.png b/Quellcodes/iud_key_rsachat/key2s.png new file mode 100644 index 0000000000000000000000000000000000000000..2dce377727ffd188260b807cdeecf9ef65dc274e GIT binary patch literal 1382 zcmV-s1)2JZP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L00TY%00TY&rhd=B00007bV*G`2jBr5 z2Olq<`&IV<00ibqL_t(o!>v|pY?Eaae$M-SbZu#ob#&d>Dk5Y9B|^*?L#~+&6^s%B zu?b?F7vg1N0>6v_5|tndf`68n5RFC`6B3o6ppg)PD%(UHj7bKgowaitgN@NaFW>jQ z#~N&jnW}K?u}exMY3GT|!@X z{_~O^Cxx(Xz^ba{N4tA>=1hSdt>-t?6uUl&NCT4NznK-Wu5waA!*I^$m;B9BZML}p zpb)`e#$uO~a-u-#c#B78=3(#zNO^Kjq1jwC{8^V0CL!?izdfE*2&gIKR3s}U2pl$y zEv*CBZdw$jsV5S7Su)%sk`g7}F*7FwB(r67+a!bgqp|ms0h1$a7*I$kIcY)Ekp8G) zjPVW;-4Q%~#=s3-@5~8-zG$>5A`MP?tSGL4&hlVR2pl}yy6t*Qqno;(5`n%*l$#ktE&(;2ZMP{#)Qod>3#ASOG8-z&#mz zVE^Jr4jk*f>hCiHY+#DLh^9|)LlMfD1tQWl&38)|Ha2tyUc3^C z{D1oxfYjl#I#FM>8Q<4@fD)@SyD1osuNGE)IuO&ox$Usj0hUSMW0-6&M*aNFSW!A3 z-8Zj5kboeOJpll)s>*U1zpeoy+-om^Rkg&47%`OCCu48r8(2MM2@VGvvHtjb=nQp1 zCX>vDKwmV*0sw>Xa6uWqSoAhFJ?McDCb-5IVOK>R*4|f*AA%?GTH|g6hk6n|q0INd z?f&9DM6^}s_*l;=DC0%0*;F##37cwx=l(}=D0mWYHtj{{^&mhBgNTqA;j9&yZnwQ4 z0Zhts;7or9)*pWt{!lkwDSsNzPFs${!A5Ls`WTl60{|&VfCEHVvsPed+xgv&JX47# z87_+pE^{#s2D~(+h54h(IvR`(p{{WceAh?7hqvb;09TT0DVY$M_{_TeDrdo3$pArt zDkh=1?^o^b8@>JN31Kh(tlal&u}h7Z6R0-eeDfn;>-yXfO-b{ht@7&<~jnCozqEjhf}1m+I` zJTc;S<^~XLL9N%9^>v&aS7Xsr<3#+~#9#&yg;DEm1F#B2s{qskTn*s4yMbpFv)>jKi7$PfM?EJ_F37abe_C%Z9(pn-$^ZZW07*qoM6N<$f@~~tTmS$7 literal 0 HcmV?d00001 diff --git a/Quellcodes/iud_key_rsachat/key3.png b/Quellcodes/iud_key_rsachat/key3.png new file mode 100644 index 0000000000000000000000000000000000000000..d1e0fa61116a4d81be5330cdce6335803e6b2b16 GIT binary patch literal 1002 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L00TY%00TY&rhd=B00007bV*G`2jBq{ z5e*0f&0pI900U}CL_t(o!^M|fXdG1($N%Tf%U zX78PQd>FSb+lV{sbUiRI4F7x2?|j^Q=MrMtu@mL}>9jE+2t~^heNyU*5HzhdPmbL) zcs%ZW)T!|BmkWh;H}}o1>Nj%$7yv27Fiipg4nrm>dAc}~yDxEo4-WoR*m~E%LUx70 zN-;4<4n03af7S#umq3+&SqB_90ZyGFcB8Mn);=0$9SGf z-<6*YLndY*2sCV4Y&<<%IgnTeK0bVD|L92W{f5+Fj=otI?b*C(;80UDRl0g=P2L^_ z03iUafo)q>Qz98yleZ@{GdGv~5BTGlxLNTm@p^yNeV+?t$`s86 zXO?+=@XTO4E&Ry?+nukF9?^l@iN!J^|QyX0EdOh61cwY2MBZZi~Lvo{kG( z#u3;4P-E@REsNmP6g*E&&z-9-#sx6qi0>ZTw zO@2Z2KLG$h#y0L}j($Lt;@$%|u4JNUB}kt>!m Y0qF#ZIC(C6wg3PC07*qoM6N<$f-n`o@&Et; literal 0 HcmV?d00001 diff --git a/Quellcodes/iud_key_rsachat/key3s.png b/Quellcodes/iud_key_rsachat/key3s.png new file mode 100644 index 0000000000000000000000000000000000000000..d905dbab2a84fd2c89a7e2bb0998eb860ac89cf5 GIT binary patch literal 1394 zcmV-&1&#WNP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L00TY%00TY&rhd=B00007bV*G`2jBr5 z2Ot=JnA*eu00i<$L_t(o!>yKkXw_vH$3M^ScQ(&%YMW!ai+0gX^U~C53VC6oN&S(P z(ZUp_B_(E{5JW~qLK=AqVo`J<3B#huEH5zT?Wmg>C}K4)+Z<<1r%rdy+|D__^LwBE z*qLrqahLPL3qO85@B96}&+~o1&nxtC96Hvta?l{V#1e`U60Bs$G0m1G<;G~)^eGv> zzV0Wz4cz%#eO_*M@~I(%J?Ve~5{)Vzj{vCasyL387Zs+@k2`^{wqMMfG=6A(YKpDV zsETR_U|Yy#aHBI$cWKA6fM&#K_H-$fSkEBhJLt2?18G7_)F+#pN|^?XDQ3^qg(&Zq@dm z>W20OyiWuG4jyazIl*)H;Z;%ZAS+b1X=+PfyP>Bq!Ao8owKy@+x~u*MS0b)6x8TQR z^QuD^^MNNp@<1o(&LH-b>!T^>>ltc*1g z7dXdvPd!ViueM($2;PcL?{;#d+|V1H;Gm-Ss!zxJL2Y0hFr?oasJV3O<8v2-^<5p% zV_A1Dl=QeAs-P~T(uT|E!Fkx04cgt*`b6NvcP8vQ^KVN@Tf0lF6!#wrm?&AvnUu{~ z#~<@QAtyO=V7CBZ!@CnJ5BQo^1cFZY)0!w~m!4rFWT%awZ00(i$(>1K+chk)u*4b| z0f6;uAOE%`==>^jrvZ#i%OTm5)Ir3Jkdv0pw&`#2!l*gy^;fd=@CNFF4Hz{8CjgM- zwHK&@F~XFLe74VekG11Vu&hL~Qik(s(Q00LxR^iv$5~am8Gq~Lm`+5=qcx{uu-@EyNg+MJu6w7?idjE5niEDnSYIhSr-vG+Ip zrMv2VQXBMxSTS%FlqN(OWt94A;?j$Pi6|8sNcE6Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L00TY%00TY&rhd=B00007bV*G`2jBq{ z5e*?hf5*1~00Ux4L_t(o!^M?dXcSiz$N%Tvne1*7({)3vX}bE*538uPaT6gR=!3N{ zrO*%AB7NwGQYrMg4~l{>_CWx`EzPMc`5_t%b6PDF%l$s`@0cJkZ-m~^% z)bprT;rOXsKdp@kTR=_Yr5RtTCe19yH>wc+L08xvm_4(&UWlIa2phN%|g2w;sKhxZ?zK^B` zhdyGh35H>U5=1h&Z2HR8&tuELtuIe(&-CVwnjioS&u+5qt?893zAkGf&R@8cT(qcX z_DTXU1`A(#nPSO6a`Dr7)`rW$X928bl^T1&g2m-`)(T|X_AHdPvorG8(7eMNvvKeOOI{Q>*z=~yjA4DW$DS`G%w@gra zsCS6Oyuks$C=C+?w_^baox%u*ifjI{1;GR*ur~d%08I3s-K}P3NSA_|;)jmQGL;(W zSl@RyHX|B4c<4wbm)l`f2$FKH+x2`>CMn6EyqjIJ<*hrhTJf)kzc|;vu6Hv@$&c8_ zCI~1f6jpa`-gGTiCj@{OKKb~y$#dU-sy&aG4XPjQc_X*KI+>0VJQ4r^Obrd6CflB; z?U_X~;jcY>z==8yBLOVkntxj~+4FTi0oX8o^{0i86~IbA^&$*&)$J?4-j51kMG-5v z*jpW(Y#YigLe2a;P#FDrGAe+KBHp&9`yNTzmuPQK0}L=Anwk(g4pPr_zMg&ajlsuS zf|YxAe&<}fp4Xm-%2KdaFhNP8jwPaQShaWek5hv~ABM$ZwHI(h003ac&d-jAPVrj^ zdNKe2AXAA~VHm6xI8==X2pyLp2rvwzGyv#^0suHjBr1neV*yf~ogb8gGdDN`f1EtE z-)d{^sv66U>jC%1*roDFW=6RQMZ*C88X6u99e2)-_5V7nu1y<%xNuLo#W@!=;8|0o z#{P!I;uW$jW;P6CKqS1n{G?uho;wpKI=Z?x$W-!XVf6ZYOW%FxmwL{*4|eQ`IJD0I QmH+?%07*qoM6N<$f|F;x@&Et; literal 0 HcmV?d00001 diff --git a/Quellcodes/iud_key_rsachat/key4s.png b/Quellcodes/iud_key_rsachat/key4s.png new file mode 100644 index 0000000000000000000000000000000000000000..1e3728a1386407f96f6b1252994ef5ba8b59f050 GIT binary patch literal 1419 zcmV;61$6p}P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L00TY%00TY&rhd=B00007bV*G`2jBr5 z2O$7-?{m`t00j$4L_t(o!>yKUY!qb_hMzODOS`>+g$i}4C0@9RqEM<335WrV{?Le+ z8U<5Sydg&UW1>bAOuR%cYG}M9D1>0tXktK6B&3!#wulC!MiA_lW}9Lu$nHXSJ3I3o zf9w_(sHWTQmrOFroNwM|&gK0^$Z>Twg_hd|1$9_fjpg$d8P`22BD+d14Fte9fS8)| zGG&RHWb(z>k=7o&z~ADW{O1vjR-J{D%r{xqqK-IDm0IjN`QB1t1kY)uJg^2Rzu8V4PmmGu!e4(7A2LOKwk(c)iYm z^i$E8+JV6CirKUN&YKY(TK9HCc}>mZ#!Vr%o#}S3zfcw1mgKR&t1iEHQ6#Tce0amV zUyr=8cA?m|{>MHwjw8;gQ`c24od0WHoe<#aCm*}**w?#OdWnRn8ZNxNM53i_^T#7{ z5zh$#psTUzGx7WTX?sWP6aAWb>3sMh0ADyR<6Lz}Ox+)iYMp|4!ZD0~Gd{8}bCfxRF{P20|RC2+DsDgS_myVIE%Brv}8&q{r08?Im;mhc+ztwq(1esD~=FjxMK>_13 zx~PJNn^v)X{u=~~Dh59V0N1X5skv)U<3p)3c#K(k zB7^gR3lE)wicw$`*K@%S*N+^pvqw*rU~vT{z5sPs+{%u~4?Nwnp0-#7#8yNERT**y zfOR72|G!GBlwVFBVM)_!!tqWXn{X!&T)BXqk!Du5yv1M9b`YD4IEb7Was~pGmCO1Z zahx?ATRFI`Jv8xjDxqs@S4h-3&5GuAw8qYg_Zip@pgZT&Fnb;S_|r9IlP5l-DOc3< zIMdO=Qg8cxjqyJ=iCDwNl~gJq;drF4<_an(U5G5CK6GG6C5Rn7w670d6>vS?uYT|+ zL>8%<6XAG=gyS6wqM3#hlvdy#L4FyM4*+yGHtk78W0_e`mtmBzM5zyLM`RAL6A&cR z?y6f6na{HC_iFuK9WuZz-+g=Bjm0y6MyAhM(_;0Z-+{XjxeI6jod+zXKGZto+VkOQ#T=u;Ke3`la-%kb$FeB2rr6L%dYX=HjPaXJeN%eh;e;>?y Z{sr+NKHg^-j=TT>002ovPDHLkV1n{@o*MuF literal 0 HcmV?d00001 diff --git a/Quellcodes/iud_key_rsachat/key5.png b/Quellcodes/iud_key_rsachat/key5.png new file mode 100644 index 0000000000000000000000000000000000000000..d9151eb9f6bbf9d7454efed1d22a524ff6a878dd GIT binary patch literal 969 zcmV;)12+7LP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L00TY%00TY&rhd=B00007bV*G`2jBr5 z2O=R8t1wOg00T)$L_t(o!@ZVKYaCS+$N%TvnKqj=VYAKJh9(x&S}U~@-L@}Q^g+`P zAQI?Ps}@AiFQ6#+pgxr9Lkl7Z_Mw7;AbF_}LM##pk0AgiWvH+l}Orp_9PpD$BY+wzBKZhrJlsX@U> z2y5DQ-zi@DEU^e&pZex_Pwv2%EFlb}W<>sx?(E*PbM&R#m)NJxQx7XiU8ALu7{vID{1;A@TQ)rBoz$m2hK~VZ*+1SnF)v)-M zf%Mn^TdGUVo}>UW&1o|b4PEI|xJHL7gQWtZ+V*(p6bP56oP?`t#}cjS8~{`tM8aE% z092!392#k>RV^@Z5<-=S69Jf+9sV$K%fwu52_T9B^=xKjTmH~ri5)~&Cr_Tv=L&DL zIMh?C%4GYK z?;O58ckW%sWnxt{KaR`eH*cNE#&I4CpwlA+;hj zsR7L285@nF;NG(3q2^kb(czbWUSL2ir4N$5@SdEr0fqWHJ1q7C;oGQTi3!lIE r&*J4@n9E~#mnL7xbq~y}XP*B6ne2m5#KElI00000NkvXXu0mjf(5bsA literal 0 HcmV?d00001 diff --git a/Quellcodes/iud_key_rsachat/key5s.png b/Quellcodes/iud_key_rsachat/key5s.png new file mode 100644 index 0000000000000000000000000000000000000000..226b186e6a02a3f755068fe8886eb8d3f939a2a5 GIT binary patch literal 1369 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 literal 0 HcmV?d00001 diff --git a/Quellcodes/iud_key_rsachat/privateKey.RSA b/Quellcodes/iud_key_rsachat/privateKey.RSA new file mode 100644 index 0000000000000000000000000000000000000000..f6f9f027cb9d44ff1a1070c1a15f16afc68c6009 GIT binary patch literal 1476 zcmZvcc{CJw9Ke4w#u!&QLykl=?xR?eHbgmMVhp)w%oz7E#+hrztt3(IK}^D|GdVIM zb!7H#iUC~Tf7hmgdM=Bu!?ROaL(|%0i=k`~0NK9;;57NzBtx;; zLcQL;hnOBU)O)M#MkZX4A~Z0UiLFv*X2eUJ z(;%}9%_1UpyUyynxY&NiPSIZ4i}K4hK_btR zLI+P@DX-AD@9OWmes9IEh234@PwkN4TOFd(txZE4!$>gyVFKi8e`+lPdD3BfVK|G? zYlwB6E2hV4sccjXZ~tOSNO;O@SgW*;`OPmV9(8-1*NIOKJ(LyH@~1Eu%zy#4uGk+w!<1+|su>-w}4`wK(I*k%o<)cPdk zF}k(&tNlK{kM}Slj8xscw~23h1eB%Yh*K;fQCXDdvCyuHfvOMj%QepUKhDq5mC!i~ zS5rvrcWL4ihIyFu&}CZwNB-#JonM5h(vHoC5G4?{p_rL;-UPI7FO(AZGiFURene*^HhX|OqW_46nl+v*NrjHgjk%-?`KJl5#`~NaX(&FQAj9Hnq zraR9eWrR6?Qt2+ujFwbRRLnN-iH(}iujY!}%PcllZj+Yawj6R|WL2I@P^_dxN!lWa zvwvj~6-=3maW;*ORUVxCD<~XYoK0%Y`aC_uBe=L55o&wd{ps^n-A_65k(tKUQMS#` zJl>b%o|+sE8e&S(-f>x9sncq{lVf#~gX0+AaoySuv*Qi`beOAI`UFu$qv5WaGgnilU42wI3n8 z5t17V@yyz#)^%1)q-5?X4eFBLhP_bs)uz@9-Ps0$&t+dG>X$3y#O}_w!$jJOvpuTB z%6(?+0vI4SmMa9ll~p7HPLDW=Al+WiX%F70RuY!~hJndtcdW(I_Ht5m`Y#KVoA*3W z5ezpFwPD2dc6d6RSzVDJ131du$VOHth6Kd^Pq*JS2>uCyeeaRLq3?MIo>evW5Apji P+_xnM%GwlTfHwXc9YB;m literal 0 HcmV?d00001 diff --git a/Quellcodes/iud_key_rsachat/publicKey.RSA b/Quellcodes/iud_key_rsachat/publicKey.RSA new file mode 100644 index 0000000000000000000000000000000000000000..1d9d46d28d2cb81b7bc45f1bc4b033bd85a4b9d5 GIT binary patch literal 551 zcmZ4UmVvdnh(RPPu`E%qI5oMnD6^ze&pWj;D79ekPyfvwvz9tDF|hbBa3{^I7}{8%M|kCI*Iz0tN;~HG?Kb zB?DeIPOUbNw(q=*jEt-d%uS5^3_x)%rY1&4hF*zIdA6j?yj=^F+ZCNf)k~s`wl@|e zSkB`L*kEw?+MkI%OEu3f`Pn#a7Xzd2H@%D}hrVstU(vj#cj{GU&EIl;s!}-t*{+^f zjaZ9rGrI?Gjaqp8VBf~KnG#FRU(oKF7kBV^U4Nor{~gYZk_83pmg*Rs`0_}nZHJTp z1+AX}mtrlfy=r|c!x^}Bxlg@c{(RK~yT_L~ZUngOUr<{WHt}@J!5eJG`D;Fkp4gOf z;+OWh)tBTithe%-m8fa7RZ)nQ_h+MfdQe!?k))bC@7~?e+|#o3WBSjVeo<8d8z0Tl zIpJTmsRW?|3}kJp4nTL?vrzsEH3NXQ$L@HnUR69gn>0e&(y%O ru82VrTangI%gfMHw2zz0?bic3A$ywY4`Nnnhy1%x{Jcsc_Baw5{@ literal 0 HcmV?d00001 diff --git a/Quellcodes/iud_key_rsachat/readme.adoc b/Quellcodes/iud_key_rsachat/readme.adoc new file mode 100644 index 0000000..3de5937 --- /dev/null +++ b/Quellcodes/iud_key_rsachat/readme.adoc @@ -0,0 +1,12 @@ += Material der ZPG IMP 10: + +|=== +|Zuordnung| Informationsgesellschaft und Datenschutz +|Klassenstufe| IMP 10 +|Bildungsplanbezug | +|Werkzeug| Chatprogramm mit asymmetrischer Verschlüsselung +|Autoren| Thomas Schaller +|=== + +== Inhalt +Chatprogramm zur Veranschaulichung von asymmetrischer Kryptologie. Nachrichten können verschlüsselt und signiert werden. Ein Man in the Middle Angriff kann simuliert werden. \ No newline at end of file diff --git a/Quellcodes/iud_key_rsachat/sign.xcf b/Quellcodes/iud_key_rsachat/sign.xcf new file mode 100644 index 0000000000000000000000000000000000000000..15c848678a7b9f07f30f9e39951cbfe82b07f9ca GIT binary patch literal 1361 zcmaJ=-D?zA6hC(+U&aPM+A8!zC#DYxlA4IbO=fm&5RpQo39<1xyO~`Fl3mHJ7{Ncl zH+^YKX?E_?A~9JjB27vm(tr@3RD2Qf1Ct z%-l&hL#K_ASloy^gEnDp2~6Q_Fd=aJ5LVN9W$dLg;E!Mxuu9mD04v?c&>w}bOJLjP zSZZjofN|EzoHCAn-PNr!TYafB)Ss}M6T{Acia{-?F`YR#XdCI& zpfk`^+Za#8QiG{sqtSQG!-;6W(eh=Bzcv7^L8=L*(G5z=dE?zcm5!uO_s5)M!e}k` zLh#&1!64RrCh24hCmB0sr&WC_9#7kuHv_8b|A$^j-Y!+|Az0#C8NrvokN-xGU^F{^ zYdVp!jU!Pz>3=~jP*=gLkHoN=0IRA^0fwX6b$IhS{J}b0w+^fBYOnID22efJDj$k+ ze}pvua{`p7hE^LcJz<_|KpY!twAOiVW)F5Oiu!umPRst$ zLb8TDo$6>+x)N8d6mF%|TwNAjP)+K9o-1{^Ofg4F;JH%BRhQ^{Nd?Qa!j@^mX_hdBrI{5l&G*7A zb*Q*!TDrAlhI&s%poCPnE*;U6lhR!adyAhh3lytLL(G z%qPr+Ftvw?A}X$gc&-eCy3GLh1z9c6fZ=rxX#Ic~hcU z%h`=7_oTBTXUVn&6X%_iI=1}YjmNybvwS}+TcVM!E%hW-B}V&qzpt_0hRZ5^HVYjh zw^r`N9q&MH{Dj??dVWqtDj%VYD}%i4i%VDNPHb6Mw< G&;$Szl}u&; literal 0 HcmV?d00001