Kezdőoldal » Tudományok » Alkalmazott tudományok » Viginere kódfejtés?

Viginere kódfejtés?

Figyelt kérdés

A programom kikódol egy kódolt karaktersort egy adott kulccsal, ha 1 karakteres kulcsot használok működik, több karakteres esetén összeomlik futtatáskor.

Íme:


#include <stdio.h>

#define KL 3

main()

{


unsigned char ch ;

FILE *fpIn, *fpOut;

int i;

unsigned char key[KL] = {0x4B, 0x49, 0x4F} ;


fpIn = fopen("ctext.txt", "r");

fpOut = fopen("dtext.txt", "w");


i=0;

while(fscanf(fpIn, "%02X", &ch) != EOF)

{


fprintf(fpOut, "%c", ch^key[i % KL ] ) ;

i++; // amint kizárom ezt a sort a programból, nem omlik össze, de csak minden harmadik betu lesz helyesen megfejtve termeszetesen.


}


fclose(fpIn);

fclose(fpOut);

return(0) ;

}


Erre a bemenetre: aaaaaa

Ezt kellene kiadja: 2A282E2A282E



2015. okt. 26. 13:20
 1/4 anonim ***** válasza:

Ez nem jó?


#include <stdio.h>

#include <ctype.h>


#define KL 6

main()

{


unsigned char ch,ch2 ;

FILE *fpIn, *fpOut;

int i;

unsigned char key[KL] = {'A', 'B', 'C','D','E','F'} ;


fpIn = fopen("ctext.txt", "r");

fpOut = fopen("dtext.txt", "w");


i=0;

while(fscanf(fpIn, "%c", &ch) != EOF)

{


ch2 = toupper(ch)-'A'+key[i%KL];

if ( ch2 > 90) ch2=ch2-'Z'+'A'-1;


fprintf(fpOut, "%.2x", ch2) ;

i++;


}


fclose(fpIn);

fclose(fpOut);

return(0) ;

}


Bemenet: HELLOWORLD

Kimenet: 48464e4f53424f534e47

2015. okt. 26. 16:47
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:

Bár én csak nagybetűkre csináltam meg. Át lehet írni, ha meg szeretnéd különböztetni.

Nem értem, hogy a ch ^ résznél mit szerettél volna.

2015. okt. 26. 16:55
Hasznos számodra ez a válasz?
 3/4 anonim ***** válasza:
100%

Ja látom, hogy dekóder kellene.

Ehhez:


#include <stdio.h>

#include <ctype.h>


#define KL 6

main()

{


int ch,ch2 ;

FILE *fpIn, *fpOut;

int i;

unsigned char key[KL] = {'A', 'B', 'C','D','E','F'} ;


fpIn = fopen("ctext.txt", "r");

fpOut = fopen("dtext.txt", "w");


i=0;

while(fscanf(fpIn, "%02x", &ch) != EOF)

{

ch2 = toupper(ch)+'A'-key[i%KL];

if ( ch2 < 65) ch2=ch2+'Z'-'A'+1;


fprintf(fpOut, "%c", ch2) ;

i++;


}


fclose(fpIn);

fclose(fpOut);

return(0) ;

}


Bemenet: 48464e4f53424f534e47

Kimenet: HELLOWORLD


Remélem jó és nincs benne egy bug.

Nálad szerintem azért a char ch miatt is fagy le.

2015. okt. 26. 18:30
Hasznos számodra ez a válasz?
 4/4 anonim ***** válasza:

LUCIFER-666!!!!! 😃


Most már végre tudom, hogy mi a szakmád, a valláskritika mögötti éned!!

2017. okt. 25. 13:06
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!