From 3131f79f730383f9309b736b343ae273de4beaa1 Mon Sep 17 00:00:00 2001 From: geoffrey Date: Tue, 24 Sep 2024 14:25:00 +0200 Subject: [PATCH] Read file block by block --- examples/poem.txt.crypt | 226 ++++++++++++++++---------------- examples/poem.txt.crypt.decrypt | 139 ++++++++++++++++++++ exec.sh | 2 +- src/.caesar.c.swp | Bin 12288 -> 16384 bytes src/.main.c.swp | Bin 12288 -> 12288 bytes src/caesar.c | 171 ++++++++++++++---------- src/caesar.h | 5 +- src/main.c | 29 ++-- src/vigenere.c | 1 - 9 files changed, 370 insertions(+), 203 deletions(-) create mode 100644 examples/poem.txt.crypt.decrypt diff --git a/examples/poem.txt.crypt b/examples/poem.txt.crypt index 6fb6eb4..46bf576 100644 --- a/examples/poem.txt.crypt +++ b/examples/poem.txt.crypt @@ -1,139 +1,139 @@ -Ô XFNSY UWêYWJ ! LWFSIJ âRJ ! TM ! OJ YTRGJ à LJSTZC ! -OJZSJ, NQ FAFNY JSHTW IJ QTSLX OTZWX UFWRN STZX, -NQ S'JS F UFX HTRUYé QJ STRGWJ ; -NQ éYFNY à HJY âLJ Tù QJ GTSMJZW KQJZWNY ; -NQ F HTSXNIéWé QF HWTNC IJ OéXZX-HMWNXY -YTZYJ WFDTSSFSYJ IFSX Q'TRGWJ. +Ô CKSXD ZBêDBO ! QBKXNO âWO ! YR ! TO DYWLO à QOXYEH ! +TOEXO, SV KFKSD OXMYB NO VYXQC TYEBC ZKBWS XYEC, +SV X'OX K ZKC MYWZDé VO XYWLBO ; +SV éDKSD à MOD âQO Yù VO LYXROEB PVOEBSD ; +SV K MYXCSNéBé VK MBYSH NO TéCEC-MRBSCD +DYEDO BKIYXXKXDO NKXC V'YWLBO. -NQ F INY : — « H'JXY QJ INJZ IJ UWTLWèX JY I'FRTZW. -OéXZX, VZN ATNY YTS KWTSY HWTNY ATNW QJ KWTSY IZ OTZW. -HMWNXY XTZWNY à VZN QJ WJUTZXXJ. -UZNXVZ'NQ JXY RTWY UTZW STZX, OJ AJZC RTZWNW UTZW QZN ; -IFSX XTS YTRGJFZ, ITSY O'FN QF UNJWWJ UTZW FUUZN, -NQ R'FUUJQQJ I'ZSJ ATNC ITZHJ. +SV K NSD : — « M'OCD VO NSOE NO ZBYQBèC OD N'KWYEB. +TéCEC, AES FYSD DYX PBYXD MBYSD FYSB VO PBYXD NE TYEB. +MRBSCD CYEBSD à AES VO BOZYECCO. +ZESCAE'SV OCD WYBD ZYEB XYEC, TO FOEH WYEBSB ZYEB VES ; +NKXC CYX DYWLOKE, NYXD T'KS VK ZSOBBO ZYEB KZZES, +SV W'KZZOVVO N'EXO FYSH NYEMO. -« XF ITHYWNSJ JXY QJ HNJQ JSYW'TZAJWY ; UFW QF RFNS, -HTRRJ ZS UèWJ Q'JSKFSY, NQ YNJSY QJ LJSWJ MZRFNS ; -UFW QZN STZX ANATSX JY STZX XTRRJX ; -FZ HMJAJY IJX LJôQNJWX ITWRFSY IFSX QJZWX RFNXTSX, -NQ IéWTGJ QJX HQJKX IJ YTZYJX QJX UWNXTSX -JY RJY JS QNGJWYé QJX MTRRJX. +« CK NYMDBSXO OCD VO MSOV OXDB'YEFOBD ; ZKB VK WKSX, +MYWWO EX ZèBO V'OXPKXD, SV DSOXD VO QOXBO REWKSX ; +ZKB VES XYEC FSFYXC OD XYEC CYWWOC ; +KE MROFOD NOC QOôVSOBC NYBWKXD NKXC VOEBC WKSCYXC, +SV NéBYLO VOC MVOPC NO DYEDOC VOC ZBSCYXC +OD WOD OX VSLOBDé VOC RYWWOC. -« TW NQ JXY, QTNS IJ STZX, ZSJ FZYWJ MZRFSNYé -VZN SJ QJ HTSSFîY UTNSY, JY IFSX Q'NSNVZNYé -WFRUJ JSHMFîSéJ, JY XTZKKWJ JY YTRGJ ; -NQX KTSY UTZW YWTZAJW INJZ IJ YéSéGWJZC JKKTWYX ; -NQX X'FLNYJSY JS AFNS ; NQX XTSY HTRRJ IJX RTWYX -VZN YâYJSY QJ RZW IJ QJZW YTRGJ. +« YB SV OCD, VYSX NO XYEC, EXO KEDBO REWKXSDé +AES XO VO MYXXKîD ZYSXD, OD NKXC V'SXSAESDé +BKWZO OXMRKîXéO, OD CYEPPBO OD DYWLO ; +SVC PYXD ZYEB DBYEFOB NSOE NO DéXéLBOEH OPPYBDC ; +SVC C'KQSDOXD OX FKSX ; SVC CYXD MYWWO NOC WYBDC +AES DâDOXD VO WEB NO VOEB DYWLO. -« XFSX QTN, XFSX GZY, XFSX LZNIJ, NQX JWWJSY NHN-GFX. -NQX XTSY RéHMFSYX, éYFSY NLSTWFSYX ; NQX S'TSY UFX -QJZW UFWY IJ QF LWFSIJ HTSVZêYJ. -O'NWFN. UTZW QJX XFZAJW OJ VZNYYJ QJ XFNSY QNJZ. -Ô RJX KWèWJX, OJ ANJSX ATZX FUUTWYJW RTS INJZ, -OJ ANJSX ATZX FUUTWYJW RF YêYJ ! » — +« CKXC VYS, CKXC LED, CKXC QESNO, SVC OBBOXD SMS-LKC. +SVC CYXD WéMRKXDC, éDKXD SQXYBKXDC ; SVC X'YXD ZKC +VOEB ZKBD NO VK QBKXNO MYXAEêDO. +T'SBKS. ZYEB VOC CKEFOB TO AESDDO VO CKSXD VSOE. +Ô WOC PBèBOC, TO FSOXC FYEC KZZYBDOB WYX NSOE, +TO FSOXC FYEC KZZYBDOB WK DêDO ! » — -UWêYWJ, NQ X'JXY XTZAJSZ, HFQRJ JS STX OTZWX YWTZGQéX, -IJ QF UFWTQJ INYJ FZC FUôYWJX : — FQQJE, -GWFAJE QJX GûHMJWX JY QJX HQFNJX ! — -JY IJ Q'FINJZ IZ HMWNXY FZ XZUWêRJ RTRJSY : -— Ô ANAFSY, FNRJE-ATZX ! FNRJE. JS ATZX FNRFSY, -KWèWJX, ATZX KJWRJWJE RJX UQFNJX. — +ZBêDBO, SV C'OCD CYEFOXE, MKVWO OX XYC TYEBC DBYELVéC, +NO VK ZKBYVO NSDO KEH KZôDBOC : — KVVOJ, +LBKFOJ VOC LûMROBC OD VOC MVKSOC ! — +OD NO V'KNSOE NE MRBSCD KE CEZBêWO WYWOXD : +— Ô FSFKXD, KSWOJ-FYEC ! KSWOJ. OX FYEC KSWKXD, +PBèBOC, FYEC POBWOBOJ WOC ZVKSOC. — -NQ X'JXY INY VZ'NQ JXY GTS I'éHQFNWJW IFSX QJZW SZNY -HJX UJZUQJX éLFWéX QTNS IZ UWTLWèX VZN QZNY, -ITSY Q'âRJ JXY HTZAJWYJ IJ ATNQJX ; -UZNX NQ X'JS JXY FQQé, IFSX QJX AJSYX, IFSX QJX KQTYX, -AJWX QJX STNWX HMJAFQJYX JY QJX XFSLQFSYX GNQQTYX, -QJX DJZC KNCéX XZW QJX éYTNQJX. +SV C'OCD NSD AE'SV OCD LYX N'éMVKSBOB NKXC VOEB XESD +MOC ZOEZVOC éQKBéC VYSX NE ZBYQBèC AES VESD, +NYXD V'âWO OCD MYEFOBDO NO FYSVOC ; +ZESC SV C'OX OCD KVVé, NKXC VOC FOXDC, NKXC VOC PVYDC, +FOBC VOC XYSBC MROFKVODC OD VOC CKXQVKXDC LSVVYDC, +VOC IOEH PSHéC CEB VOC éDYSVOC. -NN. +SS. -HJZC AJWX VZN HJY FUôYWJ FQQFNY, Q'TSY éLTWLé. +MOEH FOBC AES MOD KZôDBO KVVKSD, V'YXD éQYBQé. -NNN. +SSS. -TM ! YFSINX VZJ Qà-GFX, MéQFX ! HMJE HJX GFWGFWJX, -X'éYFQJ Q'éHMFKFZI IJ YJX RJRGWJX HMFWLé, -VZJ QJ GTZWWJFZ, WFSLJFSY XJX LQFNAJX JY XJX GFWWJX, -KWTYYJ FZ LNGJY XTS TSLQJ Tù YTS XFSL X'JXY KNLé ; +YR ! DKXNSC AEO Và-LKC, RéVKC ! MROJ MOC LKBLKBOC, +C'éDKVO V'éMRKPKEN NO DOC WOWLBOC MRKBQé, +AEO VO LYEBBOKE, BKXQOKXD COC QVKSFOC OD COC LKBBOC, +PBYDDO KE QSLOD CYX YXQVO Yù DYX CKXQ C'OCD PSQé ; -HNJQ ! YFSINX VZJ QJX HMNJSX IFSX HJ XFSL ANJSSJSY GTNWJ, -JY VZJ QF RTZHMJ MTWWNGQJ, JXXFNR FZ ATQ OTDJZC, -HTRRJ IFSX ZSJ WZHMJ JSYWJ JS YF GTZHMJ STNWJ -JY GTZWITSSJ FZ XTQJNQ IFSX QJX YWTZX IJ YJX DJZC ; +MSOV ! DKXNSC AEO VOC MRSOXC NKXC MO CKXQ FSOXXOXD LYSBO, +OD AEO VK WYEMRO RYBBSLVO, OCCKSW KE FYV TYIOEH, +MYWWO NKXC EXO BEMRO OXDBO OX DK LYEMRO XYSBO +OD LYEBNYXXO KE CYVOSV NKXC VOC DBYEC NO DOC IOEH ; -YFSINX VZ'éHMJAJQéJ, JY XFSX ATNC, XFSX UFZUNèWJX, -YF YêYJ GQêRJ JXY Qà XZW ZS NSKâRJ UNJZ, -QNAWéJ FZC ANQX FKKWTSYX, RJZWYWNJ à HTZUX IJ UNJWWJX, -NHN, IJWWNèWJ YTN, RFWYDW, TS AJSI YTS INJZ ! +DKXNSC AE'éMROFOVéO, OD CKXC FYSH, CKXC ZKEZSèBOC, +DK DêDO LVêWO OCD Và CEB EX SXPâWO ZSOE, +VSFBéO KEH FSVC KPPBYXDC, WOEBDBSO à MYEZC NO ZSOBBOC, +SMS, NOBBSèBO DYS, WKBDIB, YX FOXN DYX NSOE ! -HJ INJZ VZN S'JXY VZ'à YTN, RFWYDW, TS YJ QJ ATQJ ! -TS QJ QNAWJ à RFSIWNS, HJ INJZ UTZW VZN YZ RJZWX ! -IJX MTRRJX, HTRRJ YTN WJAêYZX IJ Q'éYTQJ, -UTZW êYWJ HFWINSFZC, UTZW êYWJ XéSFYJZWX, +MO NSOE AES X'OCD AE'à DYS, WKBDIB, YX DO VO FYVO ! +YX VO VSFBO à WKXNBSX, MO NSOE ZYEB AES DE WOEBC ! +NOC RYWWOC, MYWWO DYS BOFêDEC NO V'éDYVO, +ZYEB êDBO MKBNSXKEH, ZYEB êDBO CéXKDOEBC, -IJX UWêYWJX, UTZW FATNW IJX UFQFNX, IJX HFWWTXXJX, -JY IJX OFWINSX Q'éYé WNFSY XTZX QJ HNJQ GQJZ, -UTZW FWLJSYJW QJZW RNYWJ JY UTZW ITWJW QJZWX HWTXXJX, -UTZW GTNWJ IJ GTS ANS, FXXNX UWèX I'ZS GTS KJZ, +NOC ZBêDBOC, ZYEB KFYSB NOC ZKVKSC, NOC MKBBYCCOC, +OD NOC TKBNSXC V'éDé BSKXD CYEC VO MSOV LVOE, +ZYEB KBQOXDOB VOEB WSDBO OD ZYEB NYBOB VOEBC MBYCCOC, +ZYEB LYSBO NO LYX FSX, KCCSC ZBèC N'EX LYX POE, -FZ KTWGFS ITSY QF RFNS IFSX QJ RJZWYWJ JXY YWJRUéJ, -FZ QFWWTS HMFWLé I'TW VZN UFDJ JY VZN XTZWNY, -LWFSI INJZ ! WJYTZWSJ-YTN AJWX STZX, YêYJ HTZUéJ ! -NQX AJSIJSY OéXZX-HMWNXY ! NQX AJSIJSY OéXZX-HMWNXY ! +KE PYBLKX NYXD VK WKSX NKXC VO WOEBDBO OCD DBOWZéO, +KE VKBBYX MRKBQé N'YB AES ZKIO OD AES CYEBSD, +QBKXN NSOE ! BODYEBXO-DYS FOBC XYEC, DêDO MYEZéO ! +SVC FOXNOXD TéCEC-MRBSCD ! SVC FOXNOXD TéCEC-MRBSCD ! -NQX QNAWJSY FZ GFSINY, UTZW VZJQVZJX XFHX XTWINIJX, -Q'éAFSLNQJ, QF QTN, Q'FZYJQ éUTZAFSYé, -JY QF OZXYNHJ FZC DJZC XéAèWJX JY HFSINIJX, -JY Q'éYTNQJ IZ HTJZW MZRFNS, QF AéWNYé ! +SVC VSFBOXD KE LKXNSD, ZYEB AEOVAEOC CKMC CYBNSNOC, +V'éFKXQSVO, VK VYS, V'KEDOV éZYEFKXDé, +OD VK TECDSMO KEH IOEH CéFèBOC OD MKXNSNOC, +OD V'éDYSVO NE MYOEB REWKSX, VK FéBSDé ! -QJX GTSX OJYéX, ANAFSYX, FZ GFLSJ, TZ RTWYX, FZC KQJZAJX, -Q'MTRRJ OZXYJ UWTXHWNY UFW HFWYTZHMJ XDQQF, -Q'NSSTHJSY éLTWLé, QJ IJZNQ XFHWé IJX AJZAJX, -QJX UQJZWX IJ Q'TWUMJQNS, NQX AJSIJSY YTZY HJQF ! +VOC LYXC TODéC, FSFKXDC, KE LKQXO, YE WYBDC, KEH PVOEFOC, +V'RYWWO TECDO ZBYCMBSD ZKB MKBDYEMRO CIVVK, +V'SXXYMOXD éQYBQé, VO NOESV CKMBé NOC FOEFOC, +VOC ZVOEBC NO V'YBZROVSX, SVC FOXNOXD DYED MOVK ! -YTZY ! QF KTN, QJ XJWRJSY VZJ INJZ YNJSY XTZX XF LFWIJ, -QJ XFNSY YJRUQJ Tù, RTZWFSY, YZ INX :NSYWTïGT, -NQX QNAWJSY YTZY ! UZIJZW, AJWYZ ! — RFWYDW, WJLFWIJ, -WTZAWJ YJX DJZC VZ'JRUQNY QF QZJZW IZ YTRGJFZ ; — +DYED ! VK PYS, VO COBWOXD AEO NSOE DSOXD CYEC CK QKBNO, +VO CKSXD DOWZVO Yù, WYEBKXD, DE NSC :SXDBYïLY, +SVC VSFBOXD DYED ! ZENOEB, FOBDE ! — WKBDIB, BOQKBNO, +BYEFBO DOC IOEH AE'OWZVSD VK VEOEB NE DYWLOKE ; — -NQX AJSIJSY Q'FWHMJ FZLZXYJ Tù Q'MTXYNJ éYNSHJQQJ ! -NQX AJSIJSY HMWNXY, YJ INX-OJ ! JY XJX RJRGWJX QNéX ! -NQX AJSIJSY QF XZJZW VZN XZW XTS KWTSY WZNXXJQQJ, -JY QJX HQTZX IJ XJX RFNSX, JY QJX HQTZX IJ XJX UNJIX ! +SVC FOXNOXD V'KBMRO KEQECDO Yù V'RYCDSO éDSXMOVVO ! +SVC FOXNOXD MRBSCD, DO NSC-TO ! OD COC WOWLBOC VSéC ! +SVC FOXNOXD VK CEOEB AES CEB CYX PBYXD BESCCOVVO, +OD VOC MVYEC NO COC WKSXC, OD VOC MVYEC NO COC ZSONC ! -NQX AJSIJSY FZ GWNLFSI VZN HMJE QZN QJX FYYNWJ -QJ LWFSI HWZHNKNé XZW QJX MTRRJX UJSHMé ; -NQX AJSIJSY XF UFWTQJ, NQX AJSIJSY XTS RFWYDWJ, -JY YTS RFWYDWJ à YTN UFW-IJXXZX QJ RFWHMé ! +SVC FOXNOXD KE LBSQKXN AES MROJ VES VOC KDDSBO +VO QBKXN MBEMSPSé CEB VOC RYWWOC ZOXMRé ; +SVC FOXNOXD CK ZKBYVO, SVC FOXNOXD CYX WKBDIBO, +OD DYX WKBDIBO à DYS ZKB-NOCCEC VO WKBMRé ! -YFSY UTZW QJX HTZUX IJ KTZJY VZ'NQ WJçZY à QF UTWYJ ! -HéXFW ! YFSY UTZW Q'FRJS, YFSY UTZW Q'FQQéQZNF ! -YFSY UTZW QF UNJWWJ Tù ANSY MJZWYJW XF YêYJ RTWYJ ! -YFSY UTZW QJ IWFU WTZLN VZJ XF GFWGJ JXXZDF ! +DKXD ZYEB VOC MYEZC NO PYEOD AE'SV BOçED à VK ZYBDO ! +MéCKB ! DKXD ZYEB V'KWOX, DKXD ZYEB V'KVVéVESK ! +DKXD ZYEB VK ZSOBBO Yù FSXD ROEBDOB CK DêDO WYBDO ! +DKXD ZYEB VO NBKZ BYEQS AEO CK LKBLO OCCEIK ! -NQX AJSIJSY XJX LJSTZC RJZWYWNX, XF UFQRJ AJWYJ, -XF UQFNJ FZ KQFSH, XTS TJNQ YTZY GFNLSé I'NSKNSN, -XJX UQJZWX, XTS FLTSNJ, JY XF GTZHMJ JSYWTZAJWYJ, -JY QJ HWN VZ'NQ UTZXXF : QFRRF XFGFHYMFSN ! +SVC FOXNOXD COC QOXYEH WOEBDBSC, CK ZKVWO FOBDO, +CK ZVKSO KE PVKXM, CYX YOSV DYED LKSQXé N'SXPSXS, +COC ZVOEBC, CYX KQYXSO, OD CK LYEMRO OXDBYEFOBDO, +OD VO MBS AE'SV ZYECCK : VKWWK CKLKMDRKXS ! -NQX AJSIJSY QJ XéUZQHWJ ! NQX AJSIJSY QJX YéSèGWJX ! -QJX XéWFUMNSX HMFSYFSY FZ XJZNQ UWTKTSI IJX HNJZC, -JY QF RèWJ IJGTZY XTZX Q'FWGWJ FZC GWFX KZSèGWJX, -VZN, XJSYFSY Qà XTS KNQX, SJ QJAFNY UFX QJX DJZC ! +SVC FOXNOXD VO CéZEVMBO ! SVC FOXNOXD VOC DéXèLBOC ! +VOC CéBKZRSXC MRKXDKXD KE COESV ZBYPYXN NOC MSOEH, +OD VK WèBO NOLYED CYEC V'KBLBO KEH LBKC PEXèLBOC, +AES, COXDKXD Và CYX PSVC, XO VOFKSD ZKC VOC IOEH ! -TZN, HJX éAêVZJX, TZN, HJX RFWHMFSIX, TZN, HJX UWêYWJX -F Q'MNXYWNTS IZ HWNRJ, FXXTZAN, HTZWTSSé, -F HJ SéWTS WJUZ VZN WNY UFWRN QJX YWFîYWJX, -ZS UNJI XZW YMWFXéFX, ZS HTZIJ XZW UMWDSé, +YES, MOC éFêAEOC, YES, MOC WKBMRKXNC, YES, MOC ZBêDBOC +K V'RSCDBSYX NE MBSWO, KCCYEFS, MYEBYXXé, +K MO XéBYX BOZE AES BSD ZKBWS VOC DBKîDBOC, +EX ZSON CEB DRBKCéKC, EX MYENO CEB ZRBIXé, -FZ ATQJZW VZN YZF QJX QTNX à HTZUX IJ HWTXXJ, -FZ UNWFYJ JRUJWJZW SFUTQéTS IJWSNJW, -NAWJ IJZC KTNX, NRRTSIJ JSHTW UQZX VZJ KéWTHJ, -UTZWHJFZ IFSX QJ HQTFVZJ JY QTZU IFSX QJ HMFWSNJW, +KE FYVOEB AES DEK VOC VYSC à MYEZC NO MBYCCO, +KE ZSBKDO OWZOBOEB XKZYVéYX NOBXSOB, +SFBO NOEH PYSC, SWWYXNO OXMYB ZVEC AEO PéBYMO, +ZYEBMOKE NKXC VO MVYKAEO OD VYEZ NKXC VO MRKBXSOB, -NQX AJSIJSY, ô RFWYDW, QJ INJZ UJSXNK JY UâQJ -VZN, IJGTZY XZW QF YJWWJ JY XTZX QJ KNWRFRJSY, -YWNXYJ JY STZX XTZWNFSY IFSX STYWJ SZNY KFYFQJ, -XZW QJ STNW LTQLTYMF XFNLSJ éYJWSJQQJRJSY ! +SVC FOXNOXD, ô WKBDIB, VO NSOE ZOXCSP OD ZâVO +AES, NOLYED CEB VK DOBBO OD CYEC VO PSBWKWOXD, +DBSCDO OD XYEC CYEBSKXD NKXC XYDBO XESD PKDKVO, +CEB VO XYSB QYVQYDRK CKSQXO éDOBXOVVOWOXD ! diff --git a/examples/poem.txt.crypt.decrypt b/examples/poem.txt.crypt.decrypt new file mode 100644 index 0000000..464ca38 --- /dev/null +++ b/examples/poem.txt.crypt.decrypt @@ -0,0 +1,139 @@ +Ô SAINT PRêTRE ! GRANDE âME ! OH ! JE TOMBE à GENOUX ! +JEUNE, IL AVAIT ENCOR DE LONGS JOURS PARMI NOUS, +IL N'EN A PAS COMPTé LE NOMBRE ; +IL éTAIT à CET âGE Où LE BONHEUR FLEURIT ; +IL A CONSIDéRé LA CROIX DE JéSUS-CHRIST +TOUTE RAYONNANTE DANS L'OMBRE. + +IL A DIT : — « C'EST LE DIEU DE PROGRèS ET D'AMOUR. +JéSUS, QUI VOIT TON FRONT CROIT VOIR LE FRONT DU JOUR. +CHRIST SOURIT à QUI LE REPOUSSE. +PUISQU'IL EST MORT POUR NOUS, JE VEUX MOURIR POUR LUI ; +DANS SON TOMBEAU, DONT J'AI LA PIERRE POUR APPUI, +IL M'APPELLE D'UNE VOIX DOUCE. + +« SA DOCTRINE EST LE CIEL ENTR'OUVERT ; PAR LA MAIN, +COMME UN PèRE L'ENFANT, IL TIENT LE GENRE HUMAIN ; +PAR LUI NOUS VIVONS ET NOUS SOMMES ; +AU CHEVET DES GEôLIERS DORMANT DANS LEURS MAISONS, +IL DéROBE LES CLEFS DE TOUTES LES PRISONS +ET MET EN LIBERTé LES HOMMES. + +« OR IL EST, LOIN DE NOUS, UNE AUTRE HUMANITé +QUI NE LE CONNAîT POINT, ET DANS L'INIQUITé +RAMPE ENCHAîNéE, ET SOUFFRE ET TOMBE ; +ILS FONT POUR TROUVER DIEU DE TéNéBREUX EFFORTS ; +ILS S'AGITENT EN VAIN ; ILS SONT COMME DES MORTS +QUI TâTENT LE MUR DE LEUR TOMBE. + +« SANS LOI, SANS BUT, SANS GUIDE, ILS ERRENT ICI-BAS. +ILS SONT MéCHANTS, éTANT IGNORANTS ; ILS N'ONT PAS +LEUR PART DE LA GRANDE CONQUêTE. +J'IRAI. POUR LES SAUVER JE QUITTE LE SAINT LIEU. +Ô MES FRèRES, JE VIENS VOUS APPORTER MON DIEU, +JE VIENS VOUS APPORTER MA TêTE ! » — + +PRêTRE, IL S'EST SOUVENU, CALME EN NOS JOURS TROUBLéS, +DE LA PAROLE DITE AUX APôTRES : — ALLEZ, +BRAVEZ LES BûCHERS ET LES CLAIES ! — +ET DE L'ADIEU DU CHRIST AU SUPRêME MOMENT : +— Ô VIVANT, AIMEZ-VOUS ! AIMEZ. EN VOUS AIMANT, +FRèRES, VOUS FERMEREZ MES PLAIES. — + +IL S'EST DIT QU'IL EST BON D'éCLAIRER DANS LEUR NUIT +CES PEUPLES éGARéS LOIN DU PROGRèS QUI LUIT, +DONT L'âME EST COUVERTE DE VOILES ; +PUIS IL S'EN EST ALLé, DANS LES VENTS, DANS LES FLOTS, +VERS LES NOIRS CHEVALETS ET LES SANGLANTS BILLOTS, +LES YEUX FIXéS SUR LES éTOILES. + +II. + +CEUX VERS QUI CET APôTRE ALLAIT, L'ONT éGORGé. + +III. + +OH ! TANDIS QUE Là-BAS, HéLAS ! CHEZ CES BARBARES, +S'éTALE L'éCHAFAUD DE TES MEMBRES CHARGé, +QUE LE BOURREAU, RANGEANT SES GLAIVES ET SES BARRES, +FROTTE AU GIBET SON ONGLE Où TON SANG S'EST FIGé ; + +CIEL ! TANDIS QUE LES CHIENS DANS CE SANG VIENNENT BOIRE, +ET QUE LA MOUCHE HORRIBLE, ESSAIM AU VOL JOYEUX, +COMME DANS UNE RUCHE ENTRE EN TA BOUCHE NOIRE +ET BOURDONNE AU SOLEIL DANS LES TROUS DE TES YEUX ; + +TANDIS QU'éCHEVELéE, ET SANS VOIX, SANS PAUPIèRES, +TA TêTE BLêME EST Là SUR UN INFâME PIEU, +LIVRéE AUX VILS AFFRONTS, MEURTRIE à COUPS DE PIERRES, +ICI, DERRIèRE TOI, MARTYR, ON VEND TON DIEU ! + +CE DIEU QUI N'EST QU'à TOI, MARTYR, ON TE LE VOLE ! +ON LE LIVRE à MANDRIN, CE DIEU POUR QUI TU MEURS ! +DES HOMMES, COMME TOI REVêTUS DE L'éTOLE, +POUR êTRE CARDINAUX, POUR êTRE SéNATEURS, + +DES PRêTRES, POUR AVOIR DES PALAIS, DES CARROSSES, +ET DES JARDINS L'éTé RIANT SOUS LE CIEL BLEU, +POUR ARGENTER LEUR MITRE ET POUR DORER LEURS CROSSES, +POUR BOIRE DE BON VIN, ASSIS PRèS D'UN BON FEU, + +AU FORBAN DONT LA MAIN DANS LE MEURTRE EST TREMPéE, +AU LARRON CHARGé D'OR QUI PAYE ET QUI SOURIT, +GRAND DIEU ! RETOURNE-TOI VERS NOUS, TêTE COUPéE ! +ILS VENDENT JéSUS-CHRIST ! ILS VENDENT JéSUS-CHRIST ! + +ILS LIVRENT AU BANDIT, POUR QUELQUES SACS SORDIDES, +L'éVANGILE, LA LOI, L'AUTEL éPOUVANTé, +ET LA JUSTICE AUX YEUX SéVèRES ET CANDIDES, +ET L'éTOILE DU COEUR HUMAIN, LA VéRITé ! + +LES BONS JETéS, VIVANTS, AU BAGNE, OU MORTS, AUX FLEUVES, +L'HOMME JUSTE PROSCRIT PAR CARTOUCHE SYLLA, +L'INNOCENT éGORGé, LE DEUIL SACRé DES VEUVES, +LES PLEURS DE L'ORPHELIN, ILS VENDENT TOUT CELA ! + +TOUT ! LA FOI, LE SERMENT QUE DIEU TIENT SOUS SA GARDE, +LE SAINT TEMPLE Où, MOURANT, TU DIS :INTROïBO, +ILS LIVRENT TOUT ! PUDEUR, VERTU ! — MARTYR, REGARDE, +ROUVRE TES YEUX QU'EMPLIT LA LUEUR DU TOMBEAU ; — + +ILS VENDENT L'ARCHE AUGUSTE Où L'HOSTIE éTINCELLE ! +ILS VENDENT CHRIST, TE DIS-JE ! ET SES MEMBRES LIéS ! +ILS VENDENT LA SUEUR QUI SUR SON FRONT RUISSELLE, +ET LES CLOUS DE SES MAINS, ET LES CLOUS DE SES PIEDS ! + +ILS VENDENT AU BRIGAND QUI CHEZ LUI LES ATTIRE +LE GRAND CRUCIFIé SUR LES HOMMES PENCHé ; +ILS VENDENT SA PAROLE, ILS VENDENT SON MARTYRE, +ET TON MARTYRE à TOI PAR-DESSUS LE MARCHé ! + +TANT POUR LES COUPS DE FOUET QU'IL REçUT à LA PORTE ! +CéSAR ! TANT POUR L'AMEN, TANT POUR L'ALLéLUIA ! +TANT POUR LA PIERRE Où VINT HEURTER SA TêTE MORTE ! +TANT POUR LE DRAP ROUGI QUE SA BARBE ESSUYA ! + +ILS VENDENT SES GENOUX MEURTRIS, SA PALME VERTE, +SA PLAIE AU FLANC, SON OEIL TOUT BAIGNé D'INFINI, +SES PLEURS, SON AGONIE, ET SA BOUCHE ENTROUVERTE, +ET LE CRI QU'IL POUSSA : LAMMA SABACTHANI ! + +ILS VENDENT LE SéPULCRE ! ILS VENDENT LES TéNèBRES ! +LES SéRAPHINS CHANTANT AU SEUIL PROFOND DES CIEUX, +ET LA MèRE DEBOUT SOUS L'ARBRE AUX BRAS FUNèBRES, +QUI, SENTANT Là SON FILS, NE LEVAIT PAS LES YEUX ! + +OUI, CES éVêQUES, OUI, CES MARCHANDS, OUI, CES PRêTRES +A L'HISTRION DU CRIME, ASSOUVI, COURONNé, +A CE NéRON REPU QUI RIT PARMI LES TRAîTRES, +UN PIED SUR THRASéAS, UN COUDE SUR PHRYNé, + +AU VOLEUR QUI TUA LES LOIS à COUPS DE CROSSE, +AU PIRATE EMPEREUR NAPOLéON DERNIER, +IVRE DEUX FOIS, IMMONDE ENCOR PLUS QUE FéROCE, +POURCEAU DANS LE CLOAQUE ET LOUP DANS LE CHARNIER, + +ILS VENDENT, ô MARTYR, LE DIEU PENSIF ET PâLE +QUI, DEBOUT SUR LA TERRE ET SOUS LE FIRMAMENT, +TRISTE ET NOUS SOURIANT DANS NOTRE NUIT FATALE, +SUR LE NOIR GOLGOTHA SAIGNE éTERNELLEMENT ! diff --git a/exec.sh b/exec.sh index 9f04693..f493fee 100755 --- a/exec.sh +++ b/exec.sh @@ -1,3 +1,3 @@ #!/bin/sh -gcc -W src/main.c src/functions.c src/caesar.c src/vigenere.c -o output/main && ./output/main $1 $2 $3 $4 +gcc -Wall src/main.c src/functions.c src/caesar.c src/vigenere.c -o output/main && ./output/main $1 $2 $3 $4 diff --git a/src/.caesar.c.swp b/src/.caesar.c.swp index 57cebf3aaff760ba5fa48b54f8e794ec5fa89c26..cef07be2140dd453208d5488d7e37651aeb99723 100644 GIT binary patch literal 16384 zcmeI2TWlOx8ONt74P6q_iqZ%nRXTN4dvDI#rU{Ac4fVCPNL#f{3M55gJv(EMYVVra z*}7YkR#X){R1KF(MIa<31f&-#TA(il!2_ZsA_&nU0ReF-JRlLIk~F+<5x?)unVs3S zV>`V_fM%qhXXc#mob%29+|PPu;Lhor)t;S07T1-QHSmqI?vbniY<*|1Wz9Nu*Y%y2 zM6Go#+Wi|cy+5)lP1Nn?f>R3`r5mRYlx)AX7}RI|%HmwB)bQ<+U2z%}f2X}xp=n&I zK&rsT6=()-|DJ8udxi!FB+-tZYt>cnIJoijsb#7_sz9nhsz9nhsz9nhsz9nhs=)ue z0>R=Y>jA!EllhVx&Ha+D`=#c6%-r{P#hcgkmMV}ckSdTWkSdTWkSdTWkSdTWkSdTW zkSdTW@L#AvrD|F4zTC2I&)^)t|3~}(GgnyFU*IKp5q=7vf`{QS+yo;~fIRfTR`}aC z%lbW>f*-?I;1QUGDHw!4*bJA!`L|ovId}zr3qOLV;WKayCZP-iuno>`wXC1OH{n_M zB0K~xI4}x1*bbM%zqVM`Kj8#?A3g_kz@CA4fJ_2{aKInz(;0o9Z zTj2a=%X$?~!%27^j>A{s%kXJv!4VjNz3|t|s5^KD9*5)b7<>{w0dsIY{QE8F1b=|1 z;7ND@Dlh@#px_@I0-b^H!K2Uu7w&{H*az>09nb??Ap_?)TsjNCgp+Uro`Y|}2Ct)5 z#&?3IUsE&9lwFdd1o&N%Z8hnu8|;>D_$agztT$ed0ztRXbPJukLnQl9;q{=)N*psNUYVcr{X1dk1oA8B?x&ovmW0yFswWrwd>7VFg{oDD|SFgp`c4B<)ceYIQl%AyQ)4c6 z3TNxaGFfjpyil2+uiM$A!w5f^8&=3s7*u?iu2rowL8D?`3B>Vgt5#X?KH7A2mWqp( z(QpDIIE|vH28ycT-N!#aWpN>=@*T?Hw4@3}$2@jt-87|=x>;I)vy}J^*>o5VhumS7-}Ybl`LqB z$=9UV(lDe6ADHtR%5B!{P};b8%(T?F{0oI_>^OZRlZ!)>dbX z@f%u3dXGHnE}k46vRRu(iV!(<9fL%U7dortk+GA53&TKPMThG$yT=0JRtyGx_w}_$ zgDJd`+B9w;x}=~dVU%zx9MLYur_k3G?l9hTk4+3WYq&Ei&K#23i>`#WG6d)WHj2~t zbq(6qt5~+sP6d@{NtDj6Zq?qV~rv*P?@ZLK&xemYgYu&7)*tr<+BB%Z5G zCb6N6sWL<5tjJ343?(0MlwGN*CEp9oSSjF|iG?&XQ2${3^@;IS3J@Wr*(zownQWw& zOL!Q@w7clkvQiRrtb<)q^(^(^r8d%u=BS!a74J2*8pdHaz&rVmZBbn7rWyfSWTdjF)#i$C&-OtI$c%4kV;$5B$d?ySRzE(;5B zs#;%;8{W$1X42}`pubAD4tZ_&T+^zGvZ__uK^9kurJQ^wO9s`sq*|-{Dpq#hyp}>d zLKQS%v1IM2I<8l9k`AMEFPEZP6d{&h2ZUD^MSnGM1+N7w{W+0e%S2!jted_$)jKK70`RLCyruq3J1j0*=ESkY1?* zsRF42sRF42|91++XEgB>OJsczJ1(a*dcmg8Mf5?7S$|&8BwU}diC|NBRIc_3@CB1> zz(jKGGV6NfxNwELkuPtEX?G^;y^B9$W9+)kb@YnBj)0CAy`GKsb)fsiPU`l9gmZxB&H`xgi?jIL7YB2P*rq3nl3C+OEvP8V~8Vk&FJ zuM$yS;dZUP5lfFy;+<^Ne=c-{68D2dH+}s_D0-hfY{{*<{%;Yl?cBs_iX__5XlV`z-?Y*4Ki>;fGynhq delta 737 zcmZ9}OK4L;6oBEAzSD=PEk<34liM`4sYzNliV{IwXdy-_RKW*$liW+9CDGeNa8Xh> zQfoJM+}LG(Afi&a2o)4pQgtPWk17;F3f8)ix^N}tM#Foq)-KnM+3ZV>s7IZQ*t!fq(E;16A1!Xg&%8m}Tu zE@m)=8z|!(3OI???-@X--u2X6sI3|q(XP?s9TBf%6-!Rub&dKO{nFUyHg)AadZ}Z- zF86FQys=o$-ex&Y!BK&@>g`r*)Ln`!T7<-k0;LB@B9L75-qt>Bx!!#+TGq0l zmm-^rgg|_fz6g;%o`NW!g2KQEqNK;@DWwldqyJuuP*NKBafdT=&dl7?)zsCL-yCe% zTc@^FY!XI}NbS9Gt8_5`M|MhVC^u&!+neSQ`L<|gF{X3X+Qh+Z5g&4qgQ=w=pYR5+ zFoHo`MFjPzLoK$#hvo1h3!l9r1Gt86#BmA{9L7EbP>As?Nyz&wk>?o3Gu*`;G{QhB zGLVk3Op(WUgoo%uCmKqBi42jqc#2!Ni7SYr5w!?qBt*6|sla4933!0}xQGJ? z;QJE(8$MtF{pdji`%#IN_?ad$jVX+x7uRtP2{fPvRq$c@_+mEWE56_zUgI`SVlS$( z1LatSG)&UOWFtp0fM`HP`l#L3?pQ|A?r_^NvsF1Kl-b^5cSfB+ ztLc7~6ET&=V$tvaoa{=Qr3~BbQ0uBx&@XO7l3@l>{i3wco6OkR;gqSPW~X0QSLEqs zMzNbyrQEtTVY4G_8_9k3c1xLi#O#DAUxDs5dOVa2={5dCT5Zf5>fLa`qss%k^rb-b E7wYlzYXATM delta 1119 zcma*lOGp%P9Ki9vj~=^f>zWFM)ju%z;p(n|wPGG}rIe_HNeWpw?#`g5u8!kDOV>h6 zs17wm388iIR0k0RBdjhRqJp5urCat654|o%^qpNasSXW%mYw;}@3+6l4mAxmJUU8a`DqH#2Y-u48}2nVYFZeN+InrDz@=5W^oxOa2y&c z;m2ldf)g*-3NeQBw&jqu=TN|^rYHn56qq^K$Ap@SJITV$Y3tQrO zg$zf#`rOSjt(|ng^z`r%>GiXW_*5!nhtl324ZGuw z#a7Hj7RnM&xg;lFq((`u#(>KTwN}DpYgHu@Piob{-<9jn=`c*|@IYeR@o6v3^Y@1K ns)p=o?N?<~OIwl8R0^}F=e*}rQ>{YHYJYY1Khg)x)BgTn#nufy diff --git a/src/caesar.c b/src/caesar.c index 7d18db3..46a7e34 100755 --- a/src/caesar.c +++ b/src/caesar.c @@ -1,55 +1,85 @@ #include "caesar.h" +#define BUFFER_SIZE 128 + +/* + This function read the file block by block until the end of it + */ +int readFile(FILE *f, int *size, char *buffer){ + int index = 0; + char c; + int end = 0; + + do{ + c = fgetc(f); + buffer[index] = c; + index++; + *size += 1; + + // End of the file, we stop it + if (c == EOF){ + buffer[index - 1] = '\0'; + index = BUFFER_SIZE; + end = 1; + } + }while(index < BUFFER_SIZE); + + return end; +} /* s -> path source d -> path destination key -> key of encryption This function encrypt data */ -char *cryptCaesar(const char *s, const int key, const int countCharact, const char *data) { - char *buffer, *bufferDst = NULL; +int cryptCaesar(const char *s, const char *filenameDst, const int key) { int i; - int error = countCharact; char c = 0; + FILE *f = NULL, *fDst = NULL; + char data[BUFFER_SIZE]; + char dataEncrypted[BUFFER_SIZE]; + int size = 0, end = 0; - if(error == -1) return NULL; + // Open the file + f = fopen(s, "r+"); + if (f == NULL) return -1; - // Malloc the dest buffer - bufferDst = malloc(sizeof(int) * countCharact); - memset(bufferDst, 0, sizeof(int) * countCharact); + fDst = fopen(filenameDst, "w"); + if (fDst == NULL) { + fclose(f); + return -1; + } - /* Allocation dynamique */ - buffer = malloc(countCharact + 1); /* + 1 for '\0' */ + // We are going to read the file block by block + do { + end = readFile(f, &size, data); - /* Copy the data of file into the buffer[] */ - error = copyFile(s, buffer); - if(error != 0) return NULL; + /********* Encryption **********/ + for (i = 0; i < size; i++){ + if (data[i] >= 'A' && data[i] <= 'Z'){ + c = data[i] - 'A'; + dataEncrypted[i] = ((c + key) % 26) + 'A'; + } + else if (data[i] >= 'a' && data[i] <= 'z'){ + c = data[i] - 'a'; + dataEncrypted[i] = ((c + key) % 26) + 'A'; + } + else dataEncrypted[i] = data[i]; - /********* Encryption **********/ - for(i = 0; i < countCharact; i++) { - int val = 0; - /* For characters of A to Z */ - if(buffer[i] >= 'A' && buffer[i] <= 'Z') { - c = buffer[i] - 'A'; - val = ((c + key) % 26) + 'A'; - } - /* For characters of 'a' to 'z' */ - else if(buffer[i] >= 'a' && buffer[i] <= 'z') { - c = buffer[i] - 'a'; - val = ((c + key) % 26) + 'A'; - } - /* For others characters */ - else val = buffer[i]; + // We can write into the dest file + if (dataEncrypted[i] != '\0') + fputc(dataEncrypted[i], fDst); + } + size = 0; - bufferDst[i] = val; - } + memset(data, 0, BUFFER_SIZE); + memset(dataEncrypted, 0, BUFFER_SIZE); + }while(end != 1); - bufferDst[i] = '\0'; - - /* Freedom the memory */ - free(buffer); - - return bufferDst; + /* Close files */ + fclose(f); + fclose(fDst); + return 0; } /* s -> path source @@ -57,44 +87,51 @@ char *cryptCaesar(const char *s, const int key, const int countCharact, const ch key -> key of decryption This function decryption by Cesar */ -char *decryptCaesar(const char *s, const int key, const int countCharact) { - int error = countCharact; - char *buffer, *bufferDst = NULL; +int decryptCaesar(const char *s, const char *filenameDst, const int key) { int i; + FILE *f = NULL, *fDst = NULL; + char data[BUFFER_SIZE]; + char dataDecrypted[BUFFER_SIZE]; + int size = 0, end = 0; - if(error == -1) - return NULL; + // Open the file + f = fopen(s, "r+"); + if (f == NULL) return -1; - // Malloc the dest buffer - bufferDst = malloc(sizeof(int) * countCharact); - memset(bufferDst, 0, sizeof(int) * countCharact); + fDst = fopen(filenameDst, "w"); + if (fDst == NULL) { + fclose(f); + return -1; + } - /* Allocation dynamique */ - buffer = malloc(countCharact + 1); /* +1 for '\0' */ + // We are going to read the file block by block + do { + end = readFile(f, &size, data); - /* Copy the data from file into buffer */ - error = copyFile(s, buffer); - if(error != 0) return NULL; + /********* Decryption **********/ + for (i = 0; i < size; i++){ + int val = 0; + //if (data[i] >= 'A' && data[i] <= 'Z'){ + if(data[i] >= 65 && data[i] <= 90) { + val = data[i] - key; + if (val < 'A') + val = val + 26; + } + else val = data[i]; + dataDecrypted[i] = val; + // We can write into the dest file + if (dataDecrypted[i] != '\0') + fputc(dataDecrypted[i], fDst); + } + size = 0; - /********* Decryption **********/ - for(i = 0; i < countCharact; i++) { - int val = 0; - /* buffer[i] >= 'A' AND buffer[i] <= 'Z' */ - if(buffer[i] >= 65 && buffer[i] <= 90) { - val = buffer[i] - key; - /* val < 'A' */ - if(val < 65) - val = val + 26; - } - else - val = buffer[i]; + memset(data, 0, BUFFER_SIZE); + memset(dataDecrypted, 0, BUFFER_SIZE); + }while(end != 1); - bufferDst[i] = val; - } - bufferDst[i] = '\0'; + /* Close files */ + fclose(f); + fclose(fDst); - /* Freedom the memory */ - free(buffer); - - return bufferDst; + return 0; } diff --git a/src/caesar.h b/src/caesar.h index 53f3434..fbcb691 100755 --- a/src/caesar.h +++ b/src/caesar.h @@ -6,7 +6,8 @@ #include "functions.h" /* Functions */ -char *cryptCaesar(const char *s, const int key, const int countCharact, const char *); -char *decryptCaesar(const char *s, const int key, const int countCharact); +int foo(FILE *, int *, char *); +int cryptCaesar(const char *, const char *, const int); +int decryptCaesar(const char *, const char *, const int); #endif diff --git a/src/main.c b/src/main.c index 04e77fd..5bfc837 100755 --- a/src/main.c +++ b/src/main.c @@ -4,9 +4,8 @@ int main(int argc, char *argv[]) { int error = 0; - int numberCharacters = 0; char *options[4] = {"-c","-v","-t","-s"}; - char *hook, *fileSrc, *fileDst, *data, *buffer = NULL; + char *hook, *fileSrc, *fileDst, *buffer = NULL; size_t sFile, i; if(argc != 4) { @@ -64,20 +63,11 @@ int main(int argc, char *argv[]) { fileDst[i++] = 't'; fileDst[i++] = '\0'; - // Get size of the file - numberCharacters = fileNumberCaract(fileSrc); - - // Read the file - data = malloc(numberCharacters + 1); /* + 1 for '\0' */ - - /* Copy the data of file into the data[] */ - error = copyFile(fileSrc, data); - if(error != 0) return -1; - // Caesar cipher if(strcmp(argv[1], "-c") == 0){ // Get key int key; + int res; do{ printf("Your key (between 1 and 26): "); @@ -85,9 +75,12 @@ int main(int argc, char *argv[]) { }while(key < 1 || key > 26); if(strcmp(hook, "crypt") == 0) - buffer = cryptCaesar(fileSrc, key, numberCharacters, data); + res = cryptCaesar(fileSrc, fileDst, key); if(strcmp(hook, "decrypt") == 0) - buffer = decryptCaesar(fileSrc, key, numberCharacters); + res = decryptCaesar(fileSrc, fileDst, key); + + if (res != 0) + printf("Failed to encrypt/decrypt the file"); } // Vigenere else if(strcmp(argv[1], "-v") == 0){ @@ -98,7 +91,7 @@ int main(int argc, char *argv[]) { if(strcmp(hook, "crypt") == 0) - error = cryptVigenere(key, fileSrc, numberCharacters, buffer); + error = cryptVigenere(key, fileSrc, 0, buffer); free(key); } @@ -110,9 +103,6 @@ int main(int argc, char *argv[]) { } - // Add data to file - addDataToFile(buffer, fileDst); - /* Display error */ /* * if(error == 0) err(error, fileDst); @@ -121,6 +111,7 @@ int main(int argc, char *argv[]) { */ free(fileDst); - free(buffer); + //free(buffer); + //free(data); return 0; } diff --git a/src/vigenere.c b/src/vigenere.c index 5b6131f..791cbc1 100644 --- a/src/vigenere.c +++ b/src/vigenere.c @@ -5,7 +5,6 @@ int cryptVigenere(const char *key, const char *fileSrc, const int numberCharacte char matrice[SIZE_MATRICE_VIGENERE][SIZE_MATRICE_VIGENERE]; char *data = malloc(sizeof(char) * numberCharacters); char *dataVigenere = NULL; - char c = 0; int pos = 0; size_t i, j = 0; size_t keyLength = strlen(key);