From 2490ef008717baaa11545dee2948749b391d6fd0 Mon Sep 17 00:00:00 2001 From: geoffrey Date: Tue, 24 Sep 2024 12:34:25 +0200 Subject: [PATCH] Update code --- .gitignore | 4 - examples/poem.txt | 139 +++++++++++++++++++++++++++++ examples/poem.txt.crypt | 139 +++++++++++++++++++++++++++++ src/.caesar.c.swp | Bin 0 -> 12288 bytes src/.main.c.swp | Bin 0 -> 12288 bytes src/caesar.c | 28 +++--- src/caesar.h | 4 +- src/functions.c | 3 +- src/main.c | 188 +++++++++++++++++++++------------------- 9 files changed, 398 insertions(+), 107 deletions(-) create mode 100644 examples/poem.txt create mode 100644 examples/poem.txt.crypt create mode 100644 src/.caesar.c.swp create mode 100644 src/.main.c.swp diff --git a/.gitignore b/.gitignore index a94f109..ba2906d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1 @@ -**.txt.crypt -**.txt.decrypt -**.txt.** -**.txt main diff --git a/examples/poem.txt b/examples/poem.txt new file mode 100644 index 0000000..1b1adc2 --- /dev/null +++ b/examples/poem.txt @@ -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/examples/poem.txt.crypt b/examples/poem.txt.crypt new file mode 100644 index 0000000..6fb6eb4 --- /dev/null +++ b/examples/poem.txt.crypt @@ -0,0 +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. + +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. + +« 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. + +« 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. + +« 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 ! » — + +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. — + +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. + +NN. + +HJZC AJWX VZN HJY FUôYWJ FQQFNY, Q'TSY éLTWLé. + +NNN. + +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é ; + +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 ; + +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 ! + +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, + +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, + +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 ! + +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é ! + +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 ! + +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 ; — + +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 ! + +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é ! + +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 ! + +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 ! + +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 ! + +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é, + +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, + +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 ! diff --git a/src/.caesar.c.swp b/src/.caesar.c.swp new file mode 100644 index 0000000000000000000000000000000000000000..57cebf3aaff760ba5fa48b54f8e794ec5fa89c26 GIT binary patch literal 12288 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 key of encryption This function encrypt data */ -int cryptCaesar(const char *s, const int key, const int countCharact, char *bufferDst) { - char *buffer; +char *cryptCaesar(const char *s, const int key, const int countCharact, const char *data) { + char *buffer, *bufferDst = NULL; int i; int error = countCharact; char c = 0; - if(error == -1) return error; + if(error == -1) return NULL; + + // Malloc the dest buffer + bufferDst = malloc(sizeof(int) * countCharact); + memset(bufferDst, 0, sizeof(int) * countCharact); /* Allocation dynamique */ buffer = malloc(countCharact + 1); /* + 1 for '\0' */ /* Copy the data of file into the buffer[] */ error = copyFile(s, buffer); - if(error != 0) return error; + if(error != 0) return NULL; /********* Encryption **********/ for(i = 0; i < countCharact; i++) { @@ -45,7 +49,7 @@ int cryptCaesar(const char *s, const int key, const int countCharact, char *buff /* Freedom the memory */ free(buffer); - return error; + return bufferDst; } /* s -> path source @@ -53,20 +57,24 @@ int cryptCaesar(const char *s, const int key, const int countCharact, char *buff key -> key of decryption This function decryption by Cesar */ -int decryptCaesar(const char *s, const int key, const int countCharact, char *bufferDst) { +char *decryptCaesar(const char *s, const int key, const int countCharact) { int error = countCharact; - char *buffer; + char *buffer, *bufferDst = NULL; int i; if(error == -1) - return error; + return NULL; + + // Malloc the dest buffer + bufferDst = malloc(sizeof(int) * countCharact); + memset(bufferDst, 0, sizeof(int) * countCharact); /* Allocation dynamique */ buffer = malloc(countCharact + 1); /* +1 for '\0' */ /* Copy the data from file into buffer */ error = copyFile(s, buffer); - if(error != 0) return error; + if(error != 0) return NULL; /********* Decryption **********/ for(i = 0; i < countCharact; i++) { @@ -88,5 +96,5 @@ int decryptCaesar(const char *s, const int key, const int countCharact, char *bu /* Freedom the memory */ free(buffer); - return error; + return bufferDst; } diff --git a/src/caesar.h b/src/caesar.h index c20cf7f..53f3434 100755 --- a/src/caesar.h +++ b/src/caesar.h @@ -6,7 +6,7 @@ #include "functions.h" /* Functions */ -int cryptCaesar(const char *s, const int key, const int countCharact, char *bufferDst); -int decryptCaesar(const char *s, const int key, const int countCharact, char *bufferDst); +char *cryptCaesar(const char *s, const int key, const int countCharact, const char *); +char *decryptCaesar(const char *s, const int key, const int countCharact); #endif diff --git a/src/functions.c b/src/functions.c index 046830e..fcbb1eb 100755 --- a/src/functions.c +++ b/src/functions.c @@ -6,6 +6,7 @@ void usage() { printf("\t-c: Caesar cipher\n"); printf("\t-v: Vigenere cipher\n"); printf("\t-t: Transposition cipher\n"); + printf("\t-s: Polybius square\n"); } int fileExist(const char *path) { FILE *f=NULL; @@ -22,9 +23,9 @@ int fileExist(const char *path) { This function copy all characters of the file in the buffer */ int copyFile(const char *path, char *buffer) { - FILE *f = fopen(path, "r+"); int caract = 0; int i = 0; + FILE *f = fopen(path, "r+"); if(f == NULL) return -1; diff --git a/src/main.c b/src/main.c index cbd711d..04e77fd 100755 --- a/src/main.c +++ b/src/main.c @@ -3,116 +3,124 @@ #include "vigenere.h" int main(int argc, char *argv[]) { - int error = 0; - int numberCharacters = 0; - char *options[3] = {"-c","-v","-t"}; - char *hook, *fileSrc, *fileDst, *buffer; - size_t sFile, i; + int error = 0; + int numberCharacters = 0; + char *options[4] = {"-c","-v","-t","-s"}; + char *hook, *fileSrc, *fileDst, *data, *buffer = NULL; + size_t sFile, i; - if(argc != 4) { - usage(); - } + if(argc != 4) { + usage(); + return -1; + } - // Check options - for(i = 0; i < 3; i++){ - if(strcmp(argv[1], options[i]) == 0){ - error++; - } - } + // Check kind of encryption + for(i = 0; i < 3; i++){ + if(strcmp(argv[1], options[i]) == 0) + error++; + } - if(error == 0) { - usage(); - return -1; - } + if(error == 0) { + usage(); + return -1; + } - // Check crypt|decrypt - if(strcmp(argv[2], "crypt") != 0 && strcmp(argv[2], "decrypt") != 0){ - usage(); - return -1; - } + // Check crypt|decrypt + if(strcmp(argv[2], "crypt") != 0 && strcmp(argv[2], "decrypt") != 0){ + usage(); + return -1; + } - hook = argv[2]; + hook = argv[2]; - // Check file exist - error = fileExist(argv[3]); - if(error == -1){ - printf("File doesn't exist\n"); - // usage(); - return -1; - } + // Check file exist + error = fileExist(argv[3]); + if(error == -1){ + printf("File doesn't exist\n"); + // usage(); + return -1; + } - fileSrc = argv[3]; + fileSrc = argv[3]; - if(strcmp(hook, "crypt") == 0) sFile = sizeof(char) + strlen(fileSrc) + 5; - else sFile = sizeof(char) + strlen(fileSrc) + 7; + if(strcmp(hook, "crypt") == 0) sFile = sizeof(char) + strlen(fileSrc) + 5; + else sFile = sizeof(char) + strlen(fileSrc) + 7; - fileDst = malloc(sFile); + fileDst = malloc(sFile); - for(i = 0; i < strlen(fileSrc); i++){ - fileDst[i] = fileSrc[i]; - } + for(i = 0; i < strlen(fileSrc); i++){ + fileDst[i] = fileSrc[i]; + } - fileDst[i++] = '.'; - if(strcmp(hook, "decrypt") == 0){ - fileDst[i++] = 'd'; - fileDst[i++] = 'e'; - } - fileDst[i++] = 'c'; - fileDst[i++] = 'r'; - fileDst[i++] = 'y'; - fileDst[i++] = 'p'; - fileDst[i++] = 't'; - fileDst[i++] = '\0'; + fileDst[i++] = '.'; + if(strcmp(hook, "decrypt") == 0){ + fileDst[i++] = 'd'; + fileDst[i++] = 'e'; + } + fileDst[i++] = 'c'; + fileDst[i++] = 'r'; + fileDst[i++] = 'y'; + fileDst[i++] = 'p'; + fileDst[i++] = 't'; + fileDst[i++] = '\0'; - // Get size of the file - numberCharacters = fileNumberCaract(fileSrc); + // Get size of the file + numberCharacters = fileNumberCaract(fileSrc); - // Malloc the dest buffer - buffer = malloc(sizeof(int) * numberCharacters); - memset(buffer, 0, sizeof(int) * numberCharacters); + // Read the file + data = malloc(numberCharacters + 1); /* + 1 for '\0' */ - // Caesar cipher - if(strcmp(argv[1], "-c") == 0){ - // Get key - int key; + /* Copy the data of file into the data[] */ + error = copyFile(fileSrc, data); + if(error != 0) return -1; - do{ - printf("Your key (between 1 and 26): "); - scanf("%d",&key); - }while(key < 1 || key > 26); + // Caesar cipher + if(strcmp(argv[1], "-c") == 0){ + // Get key + int key; - if(strcmp(hook, "crypt") == 0) - error = cryptCaesar(fileSrc, key, numberCharacters, buffer); - if(strcmp(hook, "decrypt") == 0) - error = decryptCaesar(fileSrc, key, numberCharacters, buffer); - } - else if(strcmp(argv[1], "-v") == 0){ - // Get key - char *key = malloc(8); - printf("Your key: "); - scanf("%s", key); + do{ + printf("Your key (between 1 and 26): "); + scanf("%d",&key); + }while(key < 1 || key > 26); + + if(strcmp(hook, "crypt") == 0) + buffer = cryptCaesar(fileSrc, key, numberCharacters, data); + if(strcmp(hook, "decrypt") == 0) + buffer = decryptCaesar(fileSrc, key, numberCharacters); + } + // Vigenere + else if(strcmp(argv[1], "-v") == 0){ + // Get key + char *key = malloc(8); + printf("Your key: "); + scanf("%s", key); - if(strcmp(hook, "crypt") == 0) - error = cryptVigenere(key, fileSrc, numberCharacters, buffer); + if(strcmp(hook, "crypt") == 0) + error = cryptVigenere(key, fileSrc, numberCharacters, buffer); - free(key); - } - else if(strcmp(argv[1], "-t") == 0){ - // Get key - } + free(key); + } + else if(strcmp(argv[1], "-t") == 0){ + // Get key + } + // Polybius square + else if(strcmp(argv[1], "-s") == 0){ - // Add data to file - addDataToFile(buffer, fileDst); + } - /* Display error */ - /* - * if(error == 0) err(error, fileDst); - * else if(error == -1) err(error, fileSrc); - * else if(error == -2) err(error, fileDst); - */ + // Add data to file + addDataToFile(buffer, fileDst); - free(fileDst); - free(buffer); - return 0; + /* Display error */ + /* + * if(error == 0) err(error, fileDst); + * else if(error == -1) err(error, fileSrc); + * else if(error == -2) err(error, fileDst); + */ + + free(fileDst); + free(buffer); + return 0; }