Hackerboard WikiHaboBlog

[HaBo]

 
Programmieraufgaben Hier wird regelmäßig eine neue Programmieraufgabe gestellt, die dann gelöst werden soll und in Zusammenarbeit mit den Moderatoren auch besprochen werden kann.

kleines Verschlüsselungsprogramm

Diskussion: kleines Verschlüsselungsprogramm im Forum Programmieraufgaben, in der Kategorie Code Kitchen; Der Vorschlag für diese Aufgabe kam von Phuket: Aufgabe ist es ein kleines Verschlüsselugsprogramm zu coden, das einfache Verschlüsselungsalgorithmen wie ...

Like Tree2Likes

Antwort
Alt 10.11.04, 20:37   #1 (permalink)
 
Registriert seit: 02.10.01
Nornagest Leistung: Facit NTK
Likes: 0
Standard kleines Verschlüsselungsprogramm


Der Vorschlag für diese Aufgabe kam von Phuket:

Aufgabe ist es ein kleines Verschlüsselugsprogramm zu coden, das einfache Verschlüsselungsalgorithmen wie den Caesarcode und Vigenere unterstützt.

Um es etwas umfangreicher zu machen wäre es nett wenn das Programm auch Dateien verschlüsseln kann.

Viel Spaß

Nornagest


Caesar:
Jeder Buchstabe wird um eine bestimmte Anzahl von Stellen im Alphabet verschoben.
Für Schlüssel 3 wird aus A ein D.

Vigenere:
http://de.wikipedia.org/wiki/Polyalp...e_Substitution

Nornagest ist offline   Mit Zitat antworten
Alt 10.11.04, 21:20   #2 (permalink)
 
Registriert seit: 20.07.04
Phuket Leistung: Facit NTK
Likes: 0
Standard

Meine erste Perl Version beherscht momentan nur Caesar Ver und Entschlüsselung.
Problem hab ich momentan nur mit dnyamischen Verschiebungswerten. Über den tr Operator lässt sich das nicht erledigen also muss ich mir was anderes einfallen lassen.
Version wird dann nachgereicht.
Alle Text basierenden Datei Typen werden eigentlich verschlüsselt hoffe ich

Code:
 
EDIT: Das wichtigste vergessen
Phuket ist offline   Mit Zitat antworten
   
HaBOT
 

Werbung ist gerade online    
Alt 10.11.04, 21:41   #3 (permalink)
 
Registriert seit: 21.07.04
Johnson Leistung: Facit NTK
Johnson eine Nachricht über ICQ schicken
Likes: 0
Standard

Ich will echt kein Spielverderber sein, aber ich hab noch Hausaufgaben auf und bin müde also mach ich das ganze für Delphi mal verbal:
Entweder (die Dumme Variante) ne Gigantische Case of Anweisung auf nen Button packen, oder (die klügere Variante) über den Ord Befehl jeden Buchstaben um x Stellen verrücken.
Morgen liefe ich evtl nen Quellcode, hab jetzt aber wie gesagt keine Zeit das abzutippen.
Case of geht übrigens sowohl für Casesar als auch Vigenere.

Edit: Okay, ord wird problematisch mit Buchstaben wie X Y oder Z wenn der Schlüssel > 3 wird. Dafür müsst man da noch ne If Klausel setzen.
Johnson ist offline   Mit Zitat antworten
Alt 30.11.04, 19:33   #4 (permalink)
 
Registriert seit: 30.11.04
LittleSpike Leistung: Facit NTK
Likes: 0
Standard

Tach Leute.
Hab mal ein Prog bzw. die nötigen Funktionen in VB Geschrieben:

Wenn bei den Funktionen "Verschlüsseln"==False, wird entschlüsselt.
Einfach in ein Modul Packen:

Code:
Option Explicit

Function Vigenere(ByVal Text As String, ByVal Schlüssel As String, ByVal Verschlüsseln As Boolean)
Dim Zahl1 As Double
Dim Zahl As Double
Dim NeuerText As String
Dim Zeichen As Integer
Dim NZeichen As String


For Zahl1 = Len(Schlüssel) To Len(Text)
    Schlüssel = Schlüssel & Schlüssel
    If Len(Schlüssel) > Len(Text) Then
        Schlüssel = Mid(Schlüssel, 1, Len(Text))
    End If
Next Zahl1


For Zahl = 1 To Len(Text)

    Zeichen = Asc(Mid(Text, Zahl, 1))
    
        If Zeichen > 64 Then
            If Zeichen < 91 Then
                

                If Verschlüsseln = True Then
                Zeichen = Zeichen + (Asc(Mid(Schlüssel, Zahl, 1)) - 64)
                Else
                Zeichen = Zeichen - (Asc(Mid(Schlüssel, Zahl, 1)) - 64)
                End If
                
                If Zeichen < 65 Then
                    Zeichen = Zeichen + 26
                ElseIf Zeichen > 90 Then
                    Zeichen = Zeichen - 26
                End If
            End If
        End If
    NZeichen = Chr(Zeichen)
    NeuerText = NeuerText & NZeichen
Next Zahl

Vigenere = NeuerText
End Function

Function Caesar(ByVal Text As String, ByVal Schlüssel As Integer, ByVal Verschlüsseln As Boolean)
Dim Zahl As Double
Dim NeuerText As String
Dim Zeichen As Integer
Dim NZeichen As String
NeuerText = ""

For Zahl = 1 To Len(Text)

    Zeichen = Asc(Mid(Text, Zahl, 1))
    
        If Zeichen > 64 Then
            If Zeichen < 91 Then
                
                If Verschlüsseln = True Then
                Zeichen = Zeichen + Schlüssel
                Else
                Zeichen = Zeichen - Schlüssel
                End If
                
                If Zeichen < 65 Then
                    Zeichen = Zeichen + 26
                ElseIf Zeichen > 90 Then
                    Zeichen = Zeichen - 26
                End If
            End If
        End If
    NZeichen = Chr(Zeichen)
    NeuerText = NeuerText & NZeichen
Next Zahl

Caesar = NeuerText
End Function
@Nornagest: Kann es sein das du bei RoR mitspielst?
LittleSpike ist offline   Mit Zitat antworten
Alt 03.12.04, 19:42   #5 (permalink)
 
Registriert seit: 03.12.04
Boar Leistung: Facit NTK
Likes: 0
Standard

Ich hab die Caesar-Chiffre für Windows in Java programmiert. Ver- und Entschlüsselung eines kurzen Textes ist möglich.

Hier ist mein Code:

Code:
/*
 * @author: Boar
 *
 * Ver- und Entschlüsselung eines Strings mit der Caesar-Chiffre
 *
 * (c) 17.11.2004
 */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Caesar extends JFrame implements ActionListener
{
  String text;
  String convText;
  int[] alphabet = new int[26];
  boolean added = false;
  int temp=0;

  JPanel up          = new JPanel();
  JLabel in          = new JLabel("Text-Eingabe:                 ",JLabel.LEFT);
  JTextField eingabe = new JTextField(20);
  
  JPanel middle1  = new JPanel();
  JLabel  info    = new JLabel ("Schlüssel: ");
  JTextField schl = new JTextField(2);
  
  JPanel middle2  = new JPanel();
  JButton verschl = new JButton("Verschlüsseln");
  JButton entschl = new JButton("Entschlüsseln");
  
  JPanel down        = new JPanel();
  JLabel out         = new JLabel("Konvertierte Ausgabe: ");
  JTextField ausgabe = new JTextField(20);
  
  public Caesar()
  {
    for (int i=0; i<26; i++)
      alphabet[i]='A'+i;
      
    this.setTitle("Caesar-Chiffre");
    this.setSize(370,180);
    this.setResizable(false);

    ausgabe.setEditable(false);
    
    up.setLayout(new FlowLayout(FlowLayout.LEFT));
    up.add(in);
    up.add(eingabe);
    
    middle1.setLayout(new FlowLayout(FlowLayout.CENTER));
    middle1.add(info);
    middle1.add(schl);
    middle1.add(verschl);
    middle1.add(entschl);
    
    down.setLayout(new FlowLayout(FlowLayout.LEFT));
    down.add(out);
    down.add(ausgabe);
    
    getContentPane().setLayout(new BoxLayout(getContentPane(),BoxLayout.Y_AXIS));
    getContentPane().add(up);
    getContentPane().add(middle1);
    getContentPane().add(down);
    
    verschl.addActionListener(this);
    entschl.addActionListener(this);
    verschl.setActionCommand("ver");
    entschl.setActionCommand("ent");
  }
  
  public void actionPerformed(ActionEvent e)
  {
    if(e.getActionCommand().equals("ver"))
    {
      ausgabe.setText("");
      convText="   ";
      text = eingabe.getText().toUpperCase().trim();
      for(int i=0; i<text.length(); i++)
      {
        added=false;
        for(int j=0; j<26; j++)
        {
          if(text.charAt(i)==(char)alphabet[j]&& !schl.getText().equals(""))
          {
            temp=text.charAt(i);
            if(temp+Integer.parseInt(schl.getText())>90)
              temp+=(Integer.parseInt(schl.getText())-26);
            else
              temp+=Integer.parseInt(schl.getText());
            convText+=(char)temp;
            added=true;
          }
          else if(added==false&&j==25&&!schl.getText().equals(""))
            convText="   ERROR: Keine Sonderzeichen!";
          else if(added==false&&j==25&&schl.getText().equals(""))
            convText="   ERROR: Kein Schlüssel angegeben!";
          ausgabe.setText(""+convText);
        }
      }
    }
    else if(e.getActionCommand().equals("ent"))
    {
      ausgabe.setText("");
      convText="   ";
      text = eingabe.getText().toUpperCase().trim();
      for(int i=0; i<text.length(); i++)
      {
        added=false;
        for(int j=0; j<26; j++)
        {
          if(text.charAt(i)==(char)alphabet[j]&& !schl.getText().equals(""))
          {
            temp=text.charAt(i);
            if(temp-Integer.parseInt(schl.getText())<65)
              temp=temp+26-Integer.parseInt(schl.getText());
            else
              temp-=Integer.parseInt(schl.getText());
            convText+=(char)temp;
            added=true;
          }
          else if(added==false&&j==25&&!schl.getText().equals(""))
            convText="   ERROR: Keine Sonderzeichen!";
          else if(added==false&&j==25&&schl.getText().equals(""))
            convText="   ERROR: Kein Schlüssel angegeben!";
          ausgabe.setText(""+convText);
        }
      }
    }
  }
  
  public static void main(String[] args)
  {
    Caesar chiffre = new Caesar();
    
    WindowQuitter wquit = new WindowQuitter();
    chiffre.addWindowListener( wquit );
    
    chiffre.setVisible(true);
  }
}

class  WindowQuitter  extends WindowAdapter
{
  public void windowClosing( WindowEvent e )
  {
    System.exit( 0 );
  }
}
PS: Bin noch ziemlicher Anfänger, bin um jeden Verbesserungsvorschlag für meinen Code froh (z.B. Programmierstil usw.)
Boar ist offline   Mit Zitat antworten
Alt 05.12.04, 12:35   #6 (permalink)
 
Registriert seit: 10.09.04
Fat Tony Leistung: Facit NTK
Likes: 0
Standard

Den Code eines recht guten Verschlüsselungsprogramms findet ihr hier:
http://www.volkard.de/vcppkold/caesa...vorschlag.html

MfG Fat Tony
Fat Tony ist offline   Mit Zitat antworten
Alt 26.12.04, 23:34   #7 (permalink)
 
Registriert seit: 09.09.04
HoUrGLasS Leistung: Facit NTK
HoUrGLasS eine Nachricht über ICQ schicken
Likes: 0
Standard

...allerdings sollte man mit eigenen Verschlüsselungsprogrammen aufpassen.
Wenn irgendwo genutzt und auffällt then knast;

weil man es dem BSI melden muss
HoUrGLasS ist offline   Mit Zitat antworten
Alt 01.01.05, 17:24   #8 (permalink)
 
Registriert seit: 30.11.04
LittleSpike Leistung: Facit NTK
Likes: 0
Standard

Eine Derartige Pflicht besteht nur in den USA. (ob in anderen Ländern auch, weis ich nicht. Aber eindeutig nicht in Deutschland)

mfg LittleSpike
LittleSpike ist offline   Mit Zitat antworten
Alt 01.01.05, 17:38   #9 (permalink)
 
Registriert seit: 30.12.04
Ernesto Leistung: Facit NTK
Ernesto eine Nachricht über ICQ schicken
Likes: 0
Standard

die ammies ind bei sowas ja generell etwas merkwuerdig....
Ernesto ist offline   Mit Zitat antworten
Alt 03.01.05, 14:49   #10 (permalink)
 
Registriert seit: 04.08.03
Vollkorn Leistung: Facit NTK
Vollkorn eine Nachricht über ICQ schicken
Likes: 1
Standard

Kleine Info zu einer Anwendung der Verschlüsselung:
Kennt jemand den Film "2001: Odysee im Weltram" ?
Der Boardcomputer des Raumschiffs in dem der Film Spielt hört auf den Namen "HAL". Wenn man jetzt hergeht und die Buchstaben mit dem Schlüssel 1 verschiebt kommt "IBM" raus.
Kewl oder!?

Der Computer wird als absolut Fehlerfrei beschrieben.
Zitat: "Computer der HAL 9000 Serie haben noch nie einen Fehler gemacht. Sie sind absolut Perfekt.

Am Ende dreht der Computer durch und bringt alle um, ergo werden die IBM computer alle durchdrehen und uns alle umbringen
Open_Geek likes this.
Vollkorn ist offline   Mit Zitat antworten
Alt 04.01.05, 22:56   #11 (permalink)
 
Registriert seit: 30.11.04
LittleSpike Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Original von Vollkorn
Kleine Info zu einer Anwendung der Verschlüsselung:
Kennt jemand den Film "2001: Odysee im Weltram" ?
Der Boardcomputer des Raumschiffs in dem der Film Spielt hört auf den Namen "HAL". Wenn man jetzt hergeht und die Buchstaben mit dem Schlüssel 1 verschiebt kommt "IBM" raus.
Kewl oder!?

Der Computer wird als absolut Fehlerfrei beschrieben.
Zitat: "Computer der HAL 9000 Serie haben noch nie einen Fehler gemacht. Sie sind absolut Perfekt.

Am Ende dreht der Computer durch und bringt alle um, ergo werden die IBM computer alle durchdrehen und uns alle umbringen
Ceasar Verschlüsselung
Schlüssel 1 (A)

LittleSpike ist offline   Mit Zitat antworten
Alt 19.05.05, 15:04   #12 (permalink)
 
Registriert seit: 18.06.04
Frese Leistung: Facit NTK
Frese eine Nachricht über ICQ schicken
Likes: 0
Standard

ich will ja nicht dreist sein, aber das nicht zufällig noch jemand in c++ ??
Frese ist offline   Mit Zitat antworten
Alt 19.05.05, 15:13   #13 (permalink)
 
Registriert seit: 30.11.04
Valentin Leistung: Facit NTK
Valentin eine Nachricht über ICQ schicken
Likes: 0
Standard

LOL
C++ Cäsar Chiffre programmieren
Valentin ist offline   Mit Zitat antworten
Alt 19.05.05, 16:34   #14 (permalink)
 
Registriert seit: 18.06.04
Frese Leistung: Facit NTK
Frese eine Nachricht über ICQ schicken
Likes: 0
Standard

ups^^

*duckundweq*
Frese ist offline   Mit Zitat antworten
Alt 10.07.05, 01:21   #15 (permalink)
 
Registriert seit: 09.03.04
mise Leistung: Facit NTK
Likes: 0
Standard

Ich hab mal was in Python gemacht.
Man kann allerdings keine Zeichen benutzen, die bei einer ASCII-Tabelle einen höheren Dezimalwert als 127 haben benutzen. Irgendwie ist das etwas Tkinter-spezifisches beim Text() Widget (oder bloss bei mir?). ?(
Falls jemand weiss wie man das hinbekommt, bitte sagen!
Hier der Code

Edit: Hab grad gesehen, dass dieser Code auf Windows nicht (jedenfalls das ändern der Sprache) ob's bei Linux klappt, weiss ich nicht...
mise ist offline   Mit Zitat antworten
Antwort
   

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » Programmieraufgaben » kleines Verschlüsselungsprogramm
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Neues Verschlüsselungsprogramm (selbst gecodet) Tec Cryptography & Encryption 101 20.07.07 11:37
Verschlüsselungsprogramm Until-Death Code Kitchen 5 01.07.07 13:34
Verschlüsselungsprogramm antcool Cryptography & Encryption 14 21.10.05 16:31
Bestes Verschlüsselungsprogramm spyro133 Cryptography & Encryption 2 20.06.05 08:09
Verschlüsselungsprogramm Avenger Cryptography & Encryption 5 22.11.04 21:59


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 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 52 53 54 55 56 57 58 59 60 61