Forum: Mikrocontroller und Digitale Elektronik Caesar Verschlüsselung in Assambler 8051


von John (Gast)


Lesenswert?

Hallo zusammen,

Ich muss für ein Schulprojekt ein Caesar-Verschlüsselungsprogramm mit 
Assembler8051 realisieren, hab allerdings keine Ahnung wie ich das 
hinbekommen soll da ich keinen Ansatz und insgesamt nicht viel Ahnung 
von Assembler-Programmierung habe. Ein Klartext soll über eine Tastatur 
eingegeben werden und an einem LCD Display angezeigt werden. Dann soll 
ein Schlüssel ausgewählt werden(Ziffer zwischen 1 und 9). Der Schlüssel 
beschreibt die Verschiebung der einzelnen Buchstaben des Klartextes. Am 
Schluss soll der zuvor eingegebene Klartext wieder entschlüsselt werden 
und auf dem LCD Display ausgegeben werden.

Wenn jemand Lösungsvorschläge hätte würde ich mich sehr freuen.:)

von Was sehen wollen (Gast)


Lesenswert?

Auf geht's Freunde, c-harter, Lothar und Co.

von Jim M. (turboj)


Lesenswert?

John schrieb:
> Ein Klartext soll über eine Tastatur
> eingegeben werden und an einem LCD Display angezeigt werden. Dann soll
> ein Schlüssel ausgewählt werden(Ziffer zwischen 1 und 9).

Dieser Teil des Programms wird ein,zwei Größenordnungen aufwändiger sein 
als die Verschlüsselung...

von Simon L. (dfgh)


Lesenswert?

Vorschlag zur Verschlüsselung:
Mach die zuerst mal in Calc, Excel oder was du gerade da hast. Es gibt 
Funktionen um Zeichen in ASCII-Code umzuwandeln (und wieder zurück). 
Dann brauchst du nur noch dein Wissen über den Cäsarcode und die 
Modulo-Funktion...

Dann überlegst du wie das auf einem Prozessor funktioniert.
Tipp: bei einem 8-Bit-Prozessor brauchst du für die Cäsarverschlüsselung 
(Verschieben der Buchstaben gemäß Schlüssel, soweit ich mich erinnere) 
nur einen einzigen Befehl :-)

von J. S. (engineer) Benutzerseite


Lesenswert?

Den "einfachen Cäsar" hatte ich seinerzeit schon auf einem 6502 
hinbekommen, das ist kein Akt, der Fremdunterstützung braucht. :-)

von Pastor Braune (Gast)


Lesenswert?


von Jochen F. (jamesy)


Lesenswert?

Wenn ich das richtig verstehe, besteht der ganze Algorithmus der 
Verschlüsselung nur aus der Addtition einer konstanten Zahl zu der 
Ordnungszahl eines jeden Zeichens.
Alles andere macht mehr Arbeit bei der Programmierung.... ;-)

von Sascha (Gast)


Lesenswert?

Jochen F. schrieb:
> Wenn ich das richtig verstehe, besteht der ganze Algorithmus der
> Verschlüsselung nur aus der Addtition einer konstanten Zahl zu der
> Ordnungszahl eines jeden Zeichens.

Wenn das ROT13 ist: Ja. Plus wrap-around wenn man über z bzw. Z 
drüberkommt.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

John schrieb:
> Wenn jemand Lösungsvorschläge hätte würde ich mich sehr freuen.:)

versuche, deine Aufgabenstellung erst mal "umgangssprachlich" in Form 
eines Ablaufplanes zu formulieren.

Du mußt dir VORHER über die Grundstruktur deines Gesamt-Programmes klar 
sein, und kannst DANN erst anfangen, dir passende 
Assembler-Codierbefehle oder Register raus zu suchen, welche das dann 
abbilden....

Welche Assemblerbefehle [oder Hochsprachen-Befehle] z.B. für "Text über 
Tastatur eingeben" oder "Daten auf LC Display ausgeben" benötigt werden, 
ist da erst mal vollkommen egal. Tatsache ist jedoch, dass du solche 
Funktionen/Subroutinen/Unterprogramme benötigst, welche genau das 
machen.

Jede dieser Unter-Funktionen hat definierte Eingabewerte (die "wie auch 
immer" in diese Funktion hinein gelangen), eine defierte 
Verarbeitungslogik, und eine definierte Ausgabe. Das klassische E-V-A 
Prinzip halt.

Überlege dir also, was pasiert wenn dein Computer eingeschaltet wird, 
müssen sicherlich erst mal ein paar Variablen initialisiert werden. 
Danach muß irgendwas in einer Endlosschleife passsieren (Warten auf 
Texteingabe, warten auf Schlüsseleingabe, Verschlüsseln des Textes, 
Entschlüsseln des Textes, Teextausgabe, ....)

Beispielweise wird deine "Verschlüsslungsroutine" als
{Eingabe} deinen zu verschlüsselnden Text, sowie den zu nutzenden 
Schlüssel kennen müssen, um in der {Verarbeitung} diesen Schlüssel gemäß 
Herrn Caesar auf deinen Text anzuwenden. Anschließend wird die {Ausgabe} 
deiner Verschlüsselungsroutine der verschlüsselte Text sein.

Diese {Ausgabe} des Verschlüsselten Textes wird dann auch gleich die 
{Eingabe} derjenigen Rotine sein, welche als {Verarbeitungsfunktion} 
Textnachrichten auf einem Display darstellt etc.

: Bearbeitet durch User
von chris (Gast)


Lesenswert?

Jochen F. schrieb:
> Wenn ich das richtig verstehe, besteht der ganze Algorithmus der
> Verschlüsselung nur aus der Addtition einer konstanten Zahl zu der
> Ordnungszahl eines jeden Zeichens.
> Alles andere macht mehr Arbeit bei der Programmierung.... ;-)

jep so siehts aus. Über Pointer bzw Tabelle arbeiten ;)

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Lesenswert?

Jochen F. schrieb:
> Wenn ich das richtig verstehe, besteht der ganze Algorithmus der
> Verschlüsselung nur aus der Addtition einer konstanten Zahl zu der
> Ordnungszahl eines jeden Zeichens.
Den Modulo nicht vergessen...
Wahlweise: wenn result größer x, dann result=result-modulo

John schrieb:
>... Schulprojekt ... hab allerdings keine Ahnung...
Was soll das? Werden an der Schule wirklich Aufgaben verteilt, ohne dem 
Schüler vorher die Grundlagen zu geben?
Wenn Du KEINE Ahnung hast, dann geh zum Lehrer und sag ihm das.

von Jan H. (jan_m_h)


Lesenswert?

Marcus H. schrieb:
> Was soll das? Werden an der Schule wirklich Aufgaben verteilt, ohne dem
> Schüler vorher die Grundlagen zu geben?

Jein. Wenn du nicht zuhörst, fehlen dir die Grundlagen. Und dann kommt 
die Aufgabe.

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Lesenswert?

Ich hoffe Du tust dem guten John jetzt nicht unrecht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.