Startseite › Foren › Deutsches LiveCode-Forum › Caesar Veschlüsselung
Schlagwörter: Caesar
- Dieses Thema hat 15 Antworten und 3 Teilnehmer, und wurde zuletzt aktualisiert vor 3 Jahren, 7 Monaten von Torsten.
-
AutorBeiträge
-
-
Januar 20, 2021 um 12:25 Uhr #25958
Hallo zusammen,
ich möchte eine App zur Caesar Verschlüsselung schreiben. Ich weiß nur leider nicht wie ich testen kann, ob es ein Buchstabe ist und wie ich dann die Buchstaben verschiebe.
Kann mir bitte jemand helfen?
Danke schonmal 🙂 -
Januar 20, 2021 um 15:52 Uhr #25960
Hi Ledger,
herzlich willkommen im Livecode-Forum 🙂
Testen, ob ein Zeichen überhaupt ein Buchstabe ist, kann man mit:
put "ABCDEFGHIJKLMNOPQRSTUVWXYZ" into tAlphabet if DasZeichen is in tAlphabet then...
Die Position eines Zeichens kann man per offset herausfinden:
put offset(DasZeichen, tAlphabet) into tZeichenPosition
Verschieben würde ich dann so machen:
put "DEFGHIJKLMNOPQRSTUVWXYZABC" into tGeheimesAlphabet put char (tZeichenPosition) of tGeheimesAlphabet into ...
Versuch mal den Rest selbst herauszufinden 🙂
Happy Coding
Torsten -
Januar 20, 2021 um 18:07 Uhr #25962
Ach, das ist die Cäsar Verschlüsselung.
-
Januar 20, 2021 um 19:53 Uhr #25966
Ja, ganz einfach, aber zu der damaligen Zeit durchaus nützlich. Man kann die Buchstaben ja auch komplett anders anordnen 🙂
-
-
Januar 25, 2021 um 14:53 Uhr #26069
Danke Torsten für deine Antwort ^^
Ich hab jetzt das hier schonmal gemacht, aber bisher funktioniert das natürlich nicht..
on mouseUp
set the caseSensitive to true
put “abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ” into Letters
local rotation, phrase, iLetter, rotphrase
put the thumbPosition of scrollbar “Scrollbar” into rotation
— Eingabetext in phrase abspeichern
put field “Eingabefeld” into phraserepeat for each char iLetter in phrase
— Ist es ein Buchstabe? (nur wenn es wirklich ein Buchstabe ist, wird er ver-/entschlüsselt also müssen wir nach > 0 abfragen)
if iLetter is in Letters then put rotation > 0
— finde die Position des Buchstabens im Alphabet (a ist der 1. Buchstabe, A ist der 53. Buchstabe,…)
find iLetter in Letters
— bei Leerzeichen oder Sonderzeichen liefert die Funktion offset die Zahl 0 zurück
put offset(iletter,Letters) into letterPos— müssen wir verschlüsseln?
—–Dann muss zu der Position der aktuelle key dazugezählt werden und der Buchstabe an dieser neuen Position genommen werden
if rotation > 0 then add rotation to letterPos
— oder entschlüsseln?
—–Dann müssen wir im hinteren Teil des Alphabets anfangen
if rotation < 0 then subtract rotation from letterPos
–…. ansonsten (es ist kein Buchstabe sondern ein Leerzeichen oder Sonderzeichen)
if iLetter is not in Letters then put rotation = 0
—- dann lassen wir das Zeichen wie es ist.— der entschlüsselte Buchstabe wird an rotphrase angehängt
end repeat— Der neue Text muss noch ausgegeben werden.
put iLetter into rotphrase
end mouseUpkönntet ihr mir weiterhelfen?
-
Januar 26, 2021 um 00:09 Uhr #26081
Hi Ledger,
wichtigster Punkt: Code immer mit dem Button “Code” markieren (zweiter Button von rechts im Editor)
Du hast einige Dinge richtig gemacht, andere etwas umständlich und eines hast Du vergessen: das Ausgabefeld 🙂
Hier mal mein Codevorschlag:
on mouseUp set the caseSensitive to true put "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ" into Letters local rotation, phrase, iLetter, rotphrase put the thumbPosition of scrollbar "Scrollbar" into rotation put field "Eingabefeld" into phrase repeat for each char iLetter in phrase put offset(iletter,Letters) into letterPos if letterpos > 0 then put char (letterPos + rotation) of Letters after rotphrase else put iLetter after rotphrase end if end repeat put rotphrase into field "Ausgabefeld" end mouseUp
Happy Coding!
Torsten -
Januar 26, 2021 um 00:15 Uhr #26083
Noch ein kleines Gimmick: nenne den Verschlüsselungs-Button “Encode” und füge diesen Code in den Scrollbar ein:
on scrollbarDrag send "mouseup" to button "Encode" end scrollbarDrag
Wenn Du jetzt scrollst, wird sofort verschlüsselt, das hat dann sowas Matrix-Artiges 🙂
Happy Coding!
Torsten -
Januar 26, 2021 um 00:37 Uhr #26085
Preisfrage: Mit welchem Code habe ich den Text verschlüsselt?
ts rtzxjZu xjy ymj hfxjXjsxnynaj yt ywzj uzy "fghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdeFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDE" nsyt Qjyyjwx qthfq wtyfynts, umwfxj, nQjyyjw, wtyumwfxj uzy ymj ymzrgUtxnynts tk xhwtqqgfw "Xhwtqqgfw" nsyt wtyfynts uzy knjqi "Jnslfgjkjqi" nsyt umwfxj wjujfy ktw jfhm hmfw nQjyyjw ns umwfxj uzy tkkxjy(nqjyyjw,Qjyyjwx) nsyt qjyyjwUtx nk qjyyjwutx > 0 ymjs uzy hmfw (qjyyjwUtx + wtyfynts) tk Qjyyjwx fkyjw wtyumwfxj jqxj uzy nQjyyjw fkyjw wtyumwfxj jsi nk jsi wjujfy uzy wtyumwfxj nsyt knjqi "Fzxlfgjkjqi" jsi rtzxjZu
Have fun!
Torsten -
Januar 26, 2021 um 14:11 Uhr #26095
Hallo Torsten,
ich würde sagen du hast das um 21 Felder verschoben 😉
Funktioniert alles super!
Ich würde jetzt noch gerne einen Raten-Button einbauen, also dass ich auf Knopfdruck einen unbekannten Schlüssel erraten und knacken kann, hab nur noch keinen Ansatz ^^
Hättet ihr Ideen wie das geht?Beste Grüße
-
Januar 26, 2021 um 18:41 Uhr #26100
Button, der einen zufälligen Wert für rotation eingibt?
-
Januar 26, 2021 um 19:41 Uhr #26102
Nein am coolsten wäre es natürlich wenn ich auf Knopfdruck gleich die fertige Übersetzung rausbekomme und er mir dann noch sagt mit wie viel er es verschiebt. Aber das übersteigt meine Programmier-Kenntnisse. ^^
-
Januar 27, 2021 um 14:05 Uhr #26121
Das heisst, das Programm müste Durch ausprobieren, die richtige Verschlüsselung erkennen?
Ich würde so vorgehen, wie es die Leute mit der automatischen Spracherkennung machen (d.h. in welcher Sprache ist ein Text verfasst?): die haben für jede Sprache eine Liste mit sogenannten Stopwörtern. Das sind die Wörter, die nicht für eine Suche indiziert werden, weil sie zu häufig vorkommen und nach denen nicht gesucht wird, z.B. der, die das, in, am, um, etc.
Wenn Du weisst, dass der Text in Deutsch ist, kannst Du das folgendermassen machen:
1. Lade Dir eine Liste mit deutschen Stopwörtern in ein Field, findest Du leicht im Netz, wenn du “deutsche stopwörter” suchst.
2. Für jede Entschlüsselung (1-26) fragst Du für jedes Stopwort ab, wie oft es in dem Text vorkommt. Am Ende hat jede Entschlüsselung eine Zahl, die Entschlüsseluzng mit der höchsten Zahl ist wahrscheinlich richtig.
Wichtige Befehle:
* repeat with * repeat for each trueword
Probier’s mal aus, wie weit du kommst und poste den Code. Ich hab schon was geabut, funktioniert perfekt, ausser bei einzelnen Wörtern, die nicht in der Stopwortliste stehen – logischerweise.
Happy Coding
Torsten
-
-
Januar 27, 2021 um 01:01 Uhr #26106
Ich hab auch leider noch das Problem, das wenn ich einen Satz mit 19 verschlüssle, diesen dann in das Eingabefeld schreibe und dann mit 19 entschlüssle, dass dann nicht mehr alles richtig entschüsselt wird… kannst du mir da noch helfen? ^^
LG-
Januar 27, 2021 um 13:02 Uhr #26117
Wenn Du mit 19 kodierst, musst Du mit 7 encodieren 🙂
-
-
Januar 29, 2021 um 17:13 Uhr #26168
Also ich hab jetzt viel rumprobiert, aber nichts hat irgendwie ansatzweise funktioniert…ich weiß nicht wie du das so schnell schaffst ^^
-
Januar 29, 2021 um 18:11 Uhr #26172
Alles Übung, bin schliesslich schon seit Jahrzehnten am Programmieren 🙂
Vorraussetzung:
1. ein Field “Stopwords” in dem deutsche Stopwörter stehen
2. im Field “Eingabefeld” steht ein Text, den Du vorher verschlüsselt hast.Ok, hier ist das Skript, den ich im Button “Auto-Encrypt” plaziert habe:
on mouseup put field "Eingabefeld" into tEingabe put field "Stopwords" into tStopwords put "0" into tMostHits repeat with i = 1 to 26 set the thumbposition of scrollbar "Scrollbar" to i send "mouseup" to button "Encode" put empty into tHits repeat for each trueword tStopword in tStopwords repeat for each trueword tWord in field "Ausgabefeld" if tStopword = tWord then add 1 to tHits end if end repeat end repeat put i & tab & tHits & cr after tHitliste if tHits > tMostHits then put tHits into tMostHits put i into tCode end if end repeat answer "Der Entschüsselungscode ist wahrscheinlich:" && tCode & cr & cr & tHitliste set the thumbposition of scrollbar "Scrollbar" to tCode send "mouseup" to button "Encode" end mouseup
Viel Spass beim Entschlüsseln des Skripts und der Texte 🙂
Happy Coding
Torsten
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.