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 0000000..57cebf3 Binary files /dev/null and b/src/.caesar.c.swp differ diff --git a/src/.main.c.swp b/src/.main.c.swp new file mode 100644 index 0000000..577d527 Binary files /dev/null and b/src/.main.c.swp differ diff --git a/src/caesar.c b/src/caesar.c index 173ed26..7d18db3 100755 --- a/src/caesar.c +++ b/src/caesar.c @@ -6,20 +6,24 @@ key -> 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; }