Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hey ich bins schon wieder.

Folgendes Problem:

Uns hat ein prof ne Reihe von Code hingehauen die ich absolut nicht verstehe.

Es handelt sich um eine Verschlüsselungs- Methode eines Pw´s.

Mein Problem: 1) Code ist nicht ausführbar ....

2) Ich verstehe ihn nicht einmal

Hier der Code:

#include <stdio.h>

#include <conio.h>

char *codec(char *text,char codewort)

{

char *wort = (char*)malloc (20*sizeof(char));

char *textzeiger= text;

char *wortanfang=wort;

int i=0;

while('\0'!=*textzeiger)

{

*wort++=(*(codewort+(i% strlen(codewort)))-65);

i++;

}

*wort='\0';

return wortanfang;

}

Kann mir jemand da vllt behilflich sein?

bzw mal Kommentare schreiben?

Danke und euch ein Frohes Fest!

Daffi

Geschrieben

Hoi!

Hoffe Dir hilft der folgende Code


#include <stdio.h> // printf(3)
#include <stdlib.h> // malloc(3)
#include <string.h> // strlen(3)

char *codec(char *text, char *codewort) // 'codwort' solle doch ein Pointer sein?
{
// Was passiert wenn 'text' groesser als 20 ist?
char *wort = (char*)malloc(20 * sizeof(char));
// Wenn `malloc` keinen Speicher bekommt, NULL Pointer zurueck geben!
if (wort == NULL)
return NULL;
char *textzeiger = text;
char *wortanfang = wort;
int i = 0;

/*
* Original Zeile:
* while ('\0' != *textzeiger)
* Da wird immer nur das erste Feld von 'textzeiger' getestet,
* also muss nach dem Testen erhöht werden. Und das ganze in Klammern,
* weil der `*` Operator eine hoehere Prioritaet als `++` hat
*/
while (*(textzeiger++) != '\0')
{
*wort++ = (*(codewort+(i % strlen(codewort))) - 65);
/*
* *wort++
* Wir wollen auf den _Inhalt_ von 'wort', danach gehen wir
* ein Feld weiter (Fuer die naechste Runde der Schleife)
*
* (codewort+(i % strlen(codewort)))
* Wir rechen mit dem Modulo Operator aus auf welches
* (Speicher)Feld wir von 'codewort' zugreifen wollen.
* Durch das
* 'i' modulo strlen(codewort)
* bekommen wir einen Wert der NICHT groeszer als
* die Laenge von 'codewort' sein wird :-)
*
* (*(...) - 65)
* Wir ziehen vom _Inhalt_ des 'codewort' von der oben errechneten
* Position 65 ab.
* Wenn *(...) uns ein 'c' zurueck gibt wird es zu '#'
* c = Dezimal 100
* 100 - 65 = 35
* Dezimal 35 = #
*
* Und das ganze wird dann in 'wort' gespeichert
*/
i++;
}

// An der letzten Postion von 'wort' das NULL Byte setzen
*wort = '\0';

return wortanfang;
}
[/PHP]

Nur den Sinn kann ich nicht ganz erkennen.

Weil mit der Variable [i]text[/i] wird eigentlich nicht gearbeitet, also nichts [i]"verschlüsselt"[/i]

Gruß,

Daniel

Geschrieben

Ich glaube die Variable text soll das zu verschlüsselnde Wort sein wenn ich das richtig verstanden habe.

Sinn ist ja eigentlich mit dem Codewort und dem zu verschlüsselnden Wort welches der Funktion übergeben werden ein Code zu basteln.

Gearbeitet wird nichts das Passwort soll anscheinend unangetastet bleiben.

Deswegen der *Textzeiger.Weiterhin nehme ich einfach mal an das das Passwort auf 20 Zeichen begrenzt ist.

Das ist ja das Problem.Was will der Prof uns damit sagen????

Diese Verschlüsselung soll im Beleg vorkommen wobei ich immer noch nicht weis wie sie funktioniert.

Geschrieben

Leider nicht.Es war nur Inhalt einer Übung.

Wie gesagt es soll ein Wort mit einem Codewort ersetzt werden welches frei wählbar ist.

Das Prinzip verstehe ich lediglich nicht.

Geschrieben

Ok,

es gebe ein Verfahren, was der Sache nahe käme:

1. Gegeben sei ein "Codewort", das möglichst lang ist und aus Großbuchstaben besteht.

2. gegeben sei ein "Text", der ebenfalls aus Großbuchstaben besteht

3. Kodierung/Chiffrierung erfolgt nach der Formel:

(Buchstabe vom Codewort + Buchstabe vom Text - 0x82) %26+0x41

0x41=65, weil "A" diesen Kennwert in der Zeichentabelle hat, 0x82 ist das Doppelte. 26, weil es 26 Buchstaben gibt.

Das ist ein uraltes Verschlüsselungsverfahren, aber nicht für Passwörter , sondern für Nachrichten. Ich fand es bei einer Anleitung für LARP.

Vielleicht solltest du das mal ausprogramieren, und mit deinem Codebeisiel vergleichen.

MfG

Andre'

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...