Verschlüsselungs Problem[Gelöst]
Übersicht
BlitzBasic
Allgemein|
|
SephkaBetreff: Verschlüsselungs Problem[Gelöst] |
Antworten mit Zitat |
|---|---|---|
|
Ich habe ein einfaches Verschlüsselungspogramm geschrieben(dass ver- und entschlüsselt) ,aber sobald man mehr als ein zeichen eingibt scheint es in einer undendlichen Schleife aufzuhängen.
Code: [AUSKLAPPEN] Graphics 600,600,16,2
Global code$,code2$,txt$,i%,decryp$ eingabe$ = Input("Dein Text") Cls Print "Vorher: " + eingabe$ cryp(eingabe$) Print "Nachher: " + code$ decryp(code$) Print decryp$ Function cryp(txt$) For i=1 To Len(txt$) code$ = code$ + Hex(Asc(Mid(txt$,i%,1))) code$ = Replace$ (code$, "0","") code$ = Trim(code$) Next End Function Function Decryp(code$) For i=1 To Len(code$) decryp$ = decryp$ + Chr(HexToInt(Mid(code$,i%,2))) Next End Function Function HexToInt(Hexzahl$) If Left$(Hexzahl$,1)="$" Then Hexzahl$=Mid$(Hexzahl$,2) For i=1 To Len(Hexzahl$) tmp1$=Upper$(Mid$(Hexzahl$,i,1)):tmp2=tmp1$ If tmp2=0 And tmp1$<>"0" Then tmp2=Asc(tmp1$)-55 Integer_Result=Integer_Result*16:Integer_Result=Integer_Result+tmp2 Next Return Integer_Result End Function Was tun? |
||
- Zuletzt bearbeitet von Sephka am Mi, Aug 04, 2010 18:34, insgesamt einmal bearbeitet
|
|
Thunder |
Antworten mit Zitat |
|---|---|---|
|
1. Debuggen. Setze Debuglogs die dir temporäre Daten ausgeben und du bekommst es heraus.
2. ist das kein umkehrbares Verschlüsselungsverfahren. 3. Das Problem ist: i ist global und wird von zwei Funktionen, von der die eine die andere aufruft in Schleifen verwendet -> das kann nicht gut gehen mfg Thunder |
||
| Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit | ||
|
|
XeresModerator |
Antworten mit Zitat |
|---|---|---|
Debuggen. DebugLog , Stop .
Lass dir alles wichtige ausgeben, welche Funktion, welcher Schleifendurchlauf usw. |
||
|
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
||
|
|
Sephka |
Antworten mit Zitat |
|---|---|---|
| Es hängt nicht mehr aber warum ist es nicht unmkehrbar? | ||
|
|
Thunder |
Antworten mit Zitat |
|---|---|---|
|
Weil die Hexadezimale Schreibweise auch die 0 verwendet und ein Stellenwertsystem ist. Ich nehme an, du wolltest nur die Nullen am Beginn entfernen, was ja richtig ist. Dazu darf man aber keines Falls Replace verwenden.
Code: [AUSKLAPPEN] P = 50 (Hex) -> Entfernung von 0 -> 5
Chr(5) != P mfg Thunder |
||
| Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit | ||
|
|
Sephka |
Antworten mit Zitat |
|---|---|---|
|
Sorry das versteh ich nicht ganz könntest du es bitte erklärn |
||
|
|
Thunder |
Antworten mit Zitat |
|---|---|---|
|
Ok, du wandelst ja jedes Zeichen des Textes zu Hexadezimal um und hängst es an einen String.
Angenommen der Text ist "APFEL": dann kommt der String "41546454C" heraus. Aus dem "P" würde 50, allerdings ersetzt du jede 0 durch "" und ab diesem Moment ist es nicht mehr eindeutig umkehrbar: eine Umkehrung würde den String "ATdT"+Chr(12) erzeugen. Ich hoffe das war verständlicher. mfg Thunder |
||
| Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit | ||
|
|
Sephka |
Antworten mit Zitat |
|---|---|---|
|
Danke ich habs verstanden.Jetzt krieg ich nicht raus wie ich nur die ersten Nullen entfernern kann :\
Ich habs jetzt so Code: [AUSKLAPPEN] Graphics 600,600,16,2
Global code$,code2$,txt$,i%,e%,decryp$,teil$ eingabe$ = Input("Dein Text") Cls Print "Vorher: " + eingabe$ cryp(eingabe$) Print "Nachher: " + code$ decryp(code$) Print decryp$ Function cryp(txt$) For i=1 To Len(txt$) teil = Hex(Asc(Mid(txt$,i%,1))) teil = Mid(teil,7,-1) code$ = code$ + teil Next End Function Function Decryp(code$) For i=1 To Len(code$) decryp$ = decryp$ + Chr(HexToInt(Mid(code$,i%,2))) Next End Function Function HexToInt(Hexzahl$) If Left$(Hexzahl$,1)="$" Then Hexzahl$=Mid$(Hexzahl$,2) For e=1 To Len(Hexzahl$) tmp1$=Upper$(Mid$(Hexzahl$,e,1)):tmp2=tmp1$ If tmp2=0 And tmp1$<>"0" Then tmp2=Asc(tmp1$)-55 Integer_Result=Integer_Result*16:Integer_Result=Integer_Result+tmp2 Next Return Integer_Result End Function Aber es klappt immer noch nicht |
||
|
|
XeresModerator |
Antworten mit Zitat |
|---|---|---|
|
Könnte man so lösen:
BlitzBasic: [AUSKLAPPEN] Local test$="000100203000" |
||
|
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
||
|
|
Sephka |
Antworten mit Zitat |
|---|---|---|
| Ne klappt iwie nicht | ||
|
|
XeresModerator |
Antworten mit Zitat |
|---|---|---|
|
Der Fehler liegt da:
BlitzBasic: [AUSKLAPPEN] Function Decryp(code$) Ohne Step 2 verarbeitest du je ein Zeichen von den Zwei Doppelt.
Edit: D.H. du musst auch darauf achten, das der Code immer eine Gerade Anzahl Zeichen hat - sonst kann es zu Fehlern kommen. |
||
|
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
||
|
|
Sephka |
Antworten mit Zitat |
|---|---|---|
|
Code: [AUSKLAPPEN] Graphics 600,600,16,2
Global code$,code2$,txxt$,i%,e%,decryp$,teil$ eingabe$ = Input("Dein Text") Cls Print "Vorher: " + eingabe$ cryp(eingabe$) Print "Nachher: " + code$ decryp(code$) Print decryp$ Function cryp(txt$) For i=1 To Len(txt$) teil = Hex(Asc(Mid(txt$,i%,1))) teil = Mid(teil,7,-1) code$ = code$ + teil Next End Function Function Decryp(code$) For i=1 To Len(code$) Step 2 decryp$ = decryp$ + Chr(HexToInt(Mid(code$,i%,2))) Next End Function Function HexToInt(Hexzahl$) If Left$(Hexzahl$,1)="$" Then Hexzahl$=Mid$(Hexzahl$,2) For e=1 To Len(Hexzahl$) tmp1$=Upper$(Mid$(Hexzahl$,e,1)):tmp2=tmp1$ If tmp2=0 And tmp1$<>"0" Then tmp2=Asc(tmp1$)-55 Integer_Result=Integer_Result*16:Integer_Result=Integer_Result+tmp2 Next Return Integer_Result End Function Habs jetzt so gelöst ,Danke |
||
Übersicht
BlitzBasic
Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group

