Zum Inhalt springen

Pizzacorgie28

Mitglieder
  • Gesamte Inhalte

    32
  • Benutzer seit

  • Letzter Besuch

Beiträge von Pizzacorgie28

  1. vor 2 Minuten schrieb KeeperOfCoffee:

    Uhm ... ich mach ja sonst nichts mit C++, aber im ersten Post war Key mit Anführungszeichen, im zweiten mit einfach Anführungszeichen.

    Wenn ich deinen Code auf cpp.sh teste funtkioniert er nur mit einfachen Anführungzeichen...

    kannst du einmal reinschreiben was du meinst? 

    " " ?

    oder ' ' die gehen nämlich nicht hatte das testweise versucht ohne erfolg veregesen das wieder zu ändern vor dem einfügen.

     

    Gerade eben schrieb Rienne:

    Welchen Array und wie?

    oh sry key meinte ich einfach den key also  930901 so heufig hintereinander geschrieben bis array voll xD

  2. Soooo ein wenig überarbeitet.

    allerdings spuckt er immer noch wirres zeug aus 

     

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main() {
      int i = 0;
      char eingabe[99] = "This is a test string";
      char key[99] = '930901'; // Encryption key
      char output[99];
      char decrypt[99];
      size_t eingabelen = strlen(eingabe);
      size_t key_len = strlen(key);
    
      for (i = 0; i < eingabelen; i++) {
        output[i] = eingabe[i] ^ key[i % key_len]; // XOR verschlüsselung
      }
      printf("\noutput XORed: %s\n", output);
    
      for (i = 0; i < eingabelen; i++) {
        decrypt[i] = output[i] ^ key[i % key_len]; // XOR entschlüsselung
      }
      decrypt[i] = 0;  // Zero terminate
      printf("Un XORed: %s\n\n", decrypt);
      printf("\n");
      return 0;
    }

     

     

  3. vor 1 Minute schrieb Whiz-zarD:

    Und wie willst du den Key verlängern?

    das ist die frage 😂

    vor 4 Minuten schrieb Whiz-zarD:

    Was machst du bei längeren Texten?

    die Eingabe wollte ich erst mal auf 100 Zeichen beschränken .

    vor 2 Minuten schrieb Whiz-zarD:

    Ist es nicht Verschwendung von Speicher, wenn der Text kürzer ist?

    und ja das aufjedenfall aber das speicherproblem gehe ich an wenn ich mehr in der Materie stecke 😅

  4. ok also kann den key ja in der theorie wiefolgt ändern.

    char key[99]="930901"

    somit habe ich den array auf max 99 zeichen erhöht oder nicht?  Und somit kann key die eingabe welche auch max 99 zeichen hat erreichen.

    jetzt ist bloß die frage inwiefern ich key der eingabe anpasse.

    im endefekkt müsste ja das programm die länge von dem array der eingabe mit dem array des keys vergleichen und dementsprechnd verlängern oder nicht?

  5. Hmm hast du da vlt nen tipp komme da auf keinen grünen zweig 

        				for(i=0;i<strlen(eingabe);)
        				{
         					for(j=0;(j<strlen(key))&&(i<strlen(eingabe));j++)
         					{
          						numkey[i]=key[j]-'a';
    							i++;
         					}
           				}
        
        				for(i=0;i<strlen(eingabe);i++)
        				{
         					numcipher[i]=numstr[i]+numkey[i];
       					}
        				for(i=0;i<strlen(eingabe);i++)
        				{
         					if(numcipher[i]>25)
         					{
          						numcipher[i]=numcipher[i]-26;
         					}
        				} 

    habe versucht damit den key an die eingabe anzupassen kommt aber auch nur murx raus 

  6. Moin leute,

    ich versuche grade den text welcher vom user eingegeben wird über xor zu verschlüsseln und wieder zu entschlüsseln mit einem vorgegebenen key.

    Der text wird zwar ver und auch endschlüsseld aber standig werdn kryptische zeichen hinzugefügt auserhalb der eingabe (siehe anhang eingabe war hallohallo).

    leider finde ich nicht den fehler hoffe einer von euch kann mir helfen :D.

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main(){
        int i = 0;
        char eingabe[99];//Text eingabe des Users 
        char key[6]="930901";//Verschlüsselungs Key
        char output[99];
        char decrypt[99];
    
    	printf("eingabe\n");
    	scanf(" %s", &eingabe);
    	size_t eingabelen = strlen(eingabe);
    	printf("strin=%d, von eingabelen\n",eingabelen);
    	
    	
        for(i = 0; i < eingabelen; i++)
        {
            output[i] = eingabe[i]^key[i]; //XOR verschlüsselung
    		printf("\n%d",i);
        }
        printf("\noutput XORed: %s\n", output);
        //printf("\n");
    	
    	
    	
        for(i = 0; i < eingabelen; i++)
        {
                decrypt[i] = output[i]^key[i]; //XOR entschlüsselung
        }
        printf("Un XORed: %s\n\n", decrypt);
        printf("\n");
        return 0;
    }

    Danke für euer Hilfe 🤘

    Unbenannt.PNG

  7. Danke nochmal für deine Erklärung bin ich nicht weiter drauf eingegangen sry also was ein zeiger ist ist mir zumindest schon klar :D.

    Allerdings ist das mit dem * echt bescheiden und finde ich persönlich auch mega hässlich finde das in C#bzw. c++ besser gelöst aber was will man machen :D .

    Aber das mit den [ ] habe ich bis jetzt tatsächlich noch nie verstanden dank dir 🤙

     

  8. sooooooooooooooo ich habe den code noch mal neu verfasst und diesesmal es etwas knapper gehalten. allerdings auch nicht ganz fehlerfrei.

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main(){
        int i = 0;
        char eingabe[99];
        char key[6]="930913";
        char output[13];
        char decrypt[13];
    
    	printf("eingabe\n");
    	scanf(" %s", &eingabe);
    	
    	
    	
    	
        for(i = 0; i < 13; i++)
        {
                output[i] = eingabe[i]^key[i];
        }
        printf("output XORed: %s\n\n", output);
        printf("\n");
        for(i = 0; i < 13; i++)
        {
                decrypt[i] = output[i]^key[i];
        }
        printf("Un XORed: %s\n\n", decrypt);
        printf("\n");
        return 0;
    }

    ich kann zwar verschlüsseln und endschlüsseln bloß ist er momentan in der ascii Tabelle unterwegs und nicht binär wie ich es gerne hätte jetzt komm ich bloß nicht darauf wie ich ihn auf binär beschränken kann 

  9. Nur um klar zu stellen bin ziemlicher Noob und habe bereits den ganzen tag damit verbracht die kacke da zu schreiben nur damit es nicht funktioniert  😅.

    Deswegen bin ich grade ein wenig am ende xD.

    Habe um ehrlich zu sein auch deine frage hier nicht ganz verstanden

    vor 55 Minuten schrieb Whiz-zarD:

    Wieso ist in xorencrypt() key ein Zeiger auf ein Integer?

    und was ich mir hierbei gedacht habe weiß ich auch grade nicht mehr wirklich  key[i % keylen]. 

    bin grade einfach komplett im  Tunnel und frustriert.

  10. Moin Leute,

    ich versuche grade XOR Verschlüsselung / Symmetrische Verschlüsselung in C zu verwirklichen allerdings bis jetzt ohne viel Erfolg.

    Ich möchte das der User einen Text eingeben kann.

    Danach soll der User einen, 6 stelligen nummern, Key zum verschlüsseln angeben z.b. 930910.

    Daraufhin soll dann der Text mit dem Key zusammen durch XOR, verschlüsselt werden.

    Leider scheint was in der" char * xorencrypt(char * text, int * key) "etwas falsch zu laufen, da das Programm einfach beendet wird mit dem Error:

    Received signal :'Invalid Instruction'. Abort.

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    char * xorencrypt(char * text, int * key) 
    {
        size_t textlen = strlen(text);
        size_t keylen = strlen(key);
    
        char * encrypted = malloc(textlen+1);
    
        int i;
        for(i = 0; i < textlen; i++) 
    	{
            encrypted[i] = text[i] ^ key[i % keylen];
        }
    	
        encrypted[textlen] = '\0';
    
        return encrypted;
    }
    
    int main(void) 
    {
        char *text[99];
        int *key=0;
    	printf("Bitte Text eingeben:\n");
    	scanf("%99s",&text);
    	printf("text=%s\n",text);
    	printf("Bitte Key eingeben:\n");
    	scanf(" %d",&key);
    	printf("key=%d\n",key);
    
        char * encrypted = xorencrypt(text, key);
        printf("%s\n", encrypted);
        //free(encrypted);
        return 0;
    }

    hoffe ihr könnt mir ein wenig weiter helfen sitze schon den ganzen tag dran und finde den Fehler einfach nicht. 🤯

     

  11. Hmmm schon geschaut aber finde da nix.

    stehe da grad echt auf dem schlauch 🙈

    also wenn ich beim entschlüsseln anstatt -12 zu einer 14 mache kommt wieder der richtige wert raus was ja an sich auch korrekt ist aber irgendwie ein wenig geschummelt ist würde ich behaupten xD.

  12. Moin leute,

    habe mich mal an die sicherste Verschlüsselungsmethode gewagt nur um jetzt festzustellen das ich was vergeigt habe.

    #include <stdio.h>
    #include <string.h>
    
    void caesar(unsigned char d[])//bytes ohne vor zeichen nur bis 255
    {
    	for (int i=0; d[i]; i++)
    	{
    		d[i] += 12;//verschlüsselungs weite
    		if (d[i] > 'z')
    		{
    			d[i] += 'a' - 'z' - 1;
    		}
    	}
    }	
    
    void caesarback(unsigned char d[])//bytes ohne vor zeichen nur bis 255
    {
    	for (int i=0; d[i]; i++)
    	{
    		d[i] += -12;//entschlüsselungs weite
    		if (d[i] > 'z')
    		{
    			d[i] += 'a' - 'z' - 1;
    		}
    	}
    }	
    
    char * stringToLower(char*);
    
    int main(void){
    	char verent=0, d[]="abcdefghijklmnopqrstuvwxyz";//alphabet 
    
    //--Verschlüsselung--------------------------------	
    	printf("wollen sie (1)ver oder (2) entschlüseln?");
    	do 
    	{ 
    		printf("bitte geben sie 1 oder 2 ein\n");
    		scanf(" %c", &verent);
    	} while (verent >'2');
    	
    		
    	if (verent == '1')
    	{
    		printf("Verschlüsselungs text eingabe\n");
    		scanf(" %s", &d);
    		stringToLower(d);
    		caesar(d);
    		printf("%s\n", d);
    		return 0;
    	}
    //--Entschlüsselung--------------------------------	
    	else 
    	{
    		printf("Endschlüsselungs text eingabe\n");
    		scanf(" %s", &d);
    		caesarback(d);
    		printf("%s\n", d);
    	}
    
    	
    	return 0;
    }
    //ersetzt in einem String Großbuchstaben durch Kleinbuchstaben------------------
    char * stringToLower(char *d) {
    	int i;
    	int len = strlen(d);
    	for(i=0; i<len; i++) {
    		if(d[i] >= 'A' && d[i] <= 'Z') {
    			d[i] += 32;
    		}
    	}
    	return 0;
    }

    Das Programm verschlüsselt gibt allerdings beim Entschlüsseln nicht alle Zeichen korrekt aus und ich finde den Fehler nicht .

    Hoffe wer von euch kann mir da helfen damit in zukunft keiner mehr meine daten knacken kann 😅.

     

  13. lese ja eh chars ein dementsprechend ist das dann ja eh b hat bis jetzt ohne ' ' funktioniert.

    vor 6 Minuten schrieb Rienne:

    (Ich selber entwickle in ABAP und da ist es sogar problematisch, wenn du bei gewissen Klammern kein Leerzeichen setzt ^^')

    und das hört sich ja nach spaß an 😂.

    An sich finde ich programmieren auch  interessant und spannend und wenn es funktioniert macht es auch spaß. Aber programmieren ist halt auch sehr undankbar wenn man Fehler macht und nicht sehr hilfreich wenn man dann nicht weiter weiß 🤯.

    Habe bis jetzt ein wenig mit Python mich probiert fand ich deutlich verständlicher als C.

  14. Finde die Lösung von @Rienne  super das sollte reichen wir wollen es ja nicht gleich übertreiben :D 

    aber sagt mal nur noch so als frage nebenbei.

    printf("Bitte eine der oben genannten zeichen eingeben\n");

    wenn ich den Befehl  vor der Eingabe ausspucke siehe hier:

    int main(void){
    	//int  ceaser=1, vigenere=2 , symmetrische=3, eingabe=0;
    	char b=98, auswahl=0;
    	//char beenden=b; b=98 in ascii tabelle 
    	
    	
    	printf("Herzlich Willkommen\n\nWas wollen Sie tun?\n Drücken sie 1-3 für die jeweilige verschlüsselungs variante\n oder b um das Programm zu beenden\n");
    	printf(" (1) Ceasar Verschlüsselung\n (2) Vigenere Verschlüsselung\n (3) Symmetrische Verschlüsselung\n (b) Beenden\n\n");
    	//auswahl funktion hier
    	
    	while (auswahl != b){
    		printf("\nBitte geben sie eine der oben genannten zeichen ein:\n");
    		scanf("%c", &auswahl) ;		
    				
    		if (auswahl == '1') //49 steht für 1
    			printf("sie haben sich für die Ceasar Verschlüsselung entschieden") ; 
    			
    		
    	
    		else if (auswahl == '2')//50 steht für 2
    			printf("sie haben sich für die Vigenere Verschlüsselung entschieden") ;
    			
    		
    		 
    		else if (auswahl == '3')//51 steht für 3
    			printf("sie haben sich für die Symmetrische Verschlüsselung entschieden") ;
    			
    	
    		
    	
    	}
    	printf("Danke das sie sich für das Programm endschieden haben") ;
    	return 0;
    }

    habe ich das problem wenn eine falsche zahl eingegeben wird er den

     printf("\nBitte geben sie eine der oben genannten zeichen ein:\n");

    text 2 mal auspuckt liegt das am enter oder wo ist das problem? und wie kann ich das umgehen 😅

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...