Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek
Moderátor: Mods_senior
popcorn
Level 3
Příspěvky: 525 Registrován: 07 črc 2016 21:02
Příspěvek
od popcorn » 17 zář 2017 15:22
Tak ani
Kód: Vybrat vše
fgets (zprava, 100, stdin);
while (getchar() != 'n');
Tu zprávu nenačte.. viz. obrázek
zde.png (5.17 KiB) Zobrazeno 719 x
Dodatečně přidáno po 3 minutách 17 vteřinách:
Tak když jsem tam zase dal
Kód: Vybrat vše
printf("Zadejte zprávu k zašifrovánín");
scanf("%s", &zprava);
while (getchar() != 'n');
printf("TEXT: ***%s***n",zprava);
Tak jsme se posunuli podstatně dál než s fgets
scanf-output.png (5.27 KiB) Zobrazeno 719 x
CPU: i5-6500 GPU: Msi RX480 8GB RAM: Crucial 2x8GB MB: MSI B150 PSU: Seasonic S12II-520 CASE: Gladius M35
faraon
Master Level 8.5
Příspěvky: 7408 Registrován: 23 pro 2010 09:23
Příspěvek
od faraon » 17 zář 2017 15:34
Ten buffer musíš vyprázdnit PŘED fgets()!
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
popcorn
Level 3
Příspěvky: 525 Registrován: 07 črc 2016 21:02
Příspěvek
od popcorn » 17 zář 2017 15:43
Ježiši já hlupák, teď ale se mi smazali všechny mezery ve zprávě i když tam mám funkci
Takže pokud tam je mezera mělo by jí to přeskočit a šifrovat dál.
output.png (5.77 KiB) Zobrazeno 716 x
CPU: i5-6500 GPU: Msi RX480 8GB RAM: Crucial 2x8GB MB: MSI B150 PSU: Seasonic S12II-520 CASE: Gladius M35
faraon
Master Level 8.5
Příspěvky: 7408 Registrován: 23 pro 2010 09:23
Příspěvek
od faraon » 17 zář 2017 15:48
Ale to je správně, ne? Běžně se mezery vynechávaly, takže ruční šifrování probíhalo takhle:
Aspoň v šestnáctém století, kdy tahle šifra vznikla, to platilo
Naposledy upravil(a)
faraon dne 17 zář 2017 15:50, celkem upraveno 1 x.
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
popcorn
Level 3
Příspěvky: 525 Registrován: 07 črc 2016 21:02
Příspěvek
od popcorn » 17 zář 2017 15:49
To máš pravdu, tak bych to mohl nechat, ale když to budu chtít rozšifrovat, tak pro lepší přehlednost by ty mezery byly možná lepší
CPU: i5-6500 GPU: Msi RX480 8GB RAM: Crucial 2x8GB MB: MSI B150 PSU: Seasonic S12II-520 CASE: Gladius M35
faraon
Master Level 8.5
Příspěvky: 7408 Registrován: 23 pro 2010 09:23
Příspěvek
od faraon » 17 zář 2017 16:00
Pro lepší přehlednost se šifrovaný text seskupoval například po pěti písmenech, takže by vypadal třeba takhle:
XNPZQ ATBFB JHKEN JAPCL WOOYA XDUFI UKZIV KNRQL DSEZI SMXSI GE
Snižuje to pravděpodobnost chyby šifranta při přepisování. Ono i vynechání jednoho písmene může mít dost nepříjemné následky...
Navíc mezery v textu oslabují šifru, protože krátká slova se dají uhodnout a luštitel tak získá část klíče!
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
popcorn
Level 3
Příspěvky: 525 Registrován: 07 črc 2016 21:02
Příspěvek
od popcorn » 17 zář 2017 16:02
A ještě musim mít někde chybu v zašifrovací funkci, protože slovo "Ahoj" s heslem "b" by to mělo zašifrovat na bipk, ale mě to zašifruje na jkrmM. Nechápu proč je na konci to M..
output2.png (4.68 KiB) Zobrazeno 710 x
CPU: i5-6500 GPU: Msi RX480 8GB RAM: Crucial 2x8GB MB: MSI B150 PSU: Seasonic S12II-520 CASE: Gladius M35
faraon
Master Level 8.5
Příspěvky: 7408 Registrován: 23 pro 2010 09:23
Příspěvek
od faraon » 17 zář 2017 16:14
faraon píše: Nebo jakýkoliv jiný znak který není malé písmeno???
To 'M' bude asi ten '\n' na konci
Někde tam máš chybu v počítání, určitě je tohle přesně to co chceš udělat?
Kód: Vybrat vše
if (!isupper(zprava[i]))
{
hodnota = ((zprava[i]) - 96) + (heslo[j] - 96);
}
if (!islower(zprava[i]))
{
hodnota = ((zprava[i]) - 64) + (heslo[j] - 64);
}
printf("%c", 97 + (hodnota % 26));
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
popcorn
Level 3
Příspěvky: 525 Registrován: 07 črc 2016 21:02
Příspěvek
od popcorn » 17 zář 2017 16:29
Už to mám, o jeden znak jsem to měl posunutý blbě
Kód: Vybrat vše
if (!isupper(zprava[i]))
{
hodnota = (((zprava[i]) - 97) + ((heslo[j]) - 97));
}
if (!islower(zprava[i]))
{
hodnota = (((zprava[i]) - 65) + ((heslo[j]) - 65));
}
printf("%c", 97+ (hodnota % 26));
CPU: i5-6500 GPU: Msi RX480 8GB RAM: Crucial 2x8GB MB: MSI B150 PSU: Seasonic S12II-520 CASE: Gladius M35
faraon
Master Level 8.5
Příspěvky: 7408 Registrován: 23 pro 2010 09:23
Příspěvek
od faraon » 17 zář 2017 21:07
Tak schválně, jestli se mezi sebou dorozumíme:
Kód: Vybrat vše
ETVKC PBGUE DYTPG NDXKR HQPIX RVDOG PXLRZ QJFQQ PCDVC IAGXL KSATG CJRTH NUAIX IKWQF FSKWS IAGXM HDFIK AJLYP IKZOL GCGQE VDOLZ SFCPQ IVLOD XJIOP ICUED TKGGH PYHKK IUOCC THYTH CVHAJ HVUEX CPULZ DIJRU MTKNU AYACX EOCMN YCRSK XBAVH ADJUA MXTKK UMVJB UCEOC NOPPZ VXERC XXDDC SONCG BZPSC CZZPO ZNHQL CXCGF LKCCZ RLETV VZJRW THDFC TDVXE KJLQI DIPNN SCXIO BWTPE NPOLR TKYID TCKGE NNZNL RPPOP HZPZN XLOFK GGAYC C
Heslo je
PC-HELP . Nekontroloval jsem to ručním šifrováním, takže doufám že v mém programu nemám nějakou botu
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
popcorn
Level 3
Příspěvky: 525 Registrován: 07 črc 2016 21:02
Příspěvek
od popcorn » 18 zář 2017 16:19
Hm... Mám pocit, že mě v hesle nebude fungovat '-'. Protože mi to rozluští náhodné znaky..
CPU: i5-6500 GPU: Msi RX480 8GB RAM: Crucial 2x8GB MB: MSI B150 PSU: Seasonic S12II-520 CASE: Gladius M35
faraon
Master Level 8.5
Příspěvky: 7408 Registrován: 23 pro 2010 09:23
Příspěvek
od faraon » 18 zář 2017 17:10
A když ho zadáš bez pomlčky? Já jsem to načítání udělal tak že se všechny neplatné znaky rovnou zahodí a malá písmena převedou na velká, takže pracuji pouze s A..Z.
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)