fork download
  1. def enc_vigenere(clair, key)
  2. cipher = ''
  3. i = 0
  4. clair.each_byte do |letter|
  5. cipher += ((((letter - 'A'.ord) + ((key[i % key.length].ord) - 'A'.ord)) % 26) + 'A'.ord).chr
  6. i += 1
  7. end
  8. return cipher
  9. end
  10.  
  11. def dec_vigenere(cipher, key)
  12. clair = ''
  13. i = 0
  14. cipher.each_byte do |letter|
  15. clair += ((((letter - 'A'.ord) - ((key[i % key.length].ord) - 'A'.ord)) % 26) + 'A'.ord).chr
  16. i += 1
  17. end
  18. return clair
  19. end
  20.  
  21. puts 'V1G3N3R3 3NCRYP70R'
  22. puts
  23. puts 'Encrypt or decrypt ? e/d'
  24. c = gets.chomp
  25. puts
  26. if (c == 'e')
  27. puts 'Enter the text to encrypt'
  28. clair = gets.chomp.downcase
  29. puts
  30. puts 'Enter the key'
  31. key = gets.chomp.upcase
  32. puts
  33. nclair = ''
  34. clair.each_byte do |letter|
  35. case letter
  36. when 97..122
  37. nclair += letter.chr.upcase
  38. end
  39. end
  40. puts enc_vigenere(nclair, key)
  41. elsif (c == 'd')
  42. puts 'Enter the text to decrypt'
  43. cipher = gets.chomp.downcase
  44. puts
  45. puts 'Enter the key'
  46. key = gets.chomp.upcase
  47. puts
  48. ncipher = ''
  49. cipher.each_byte do |letter|
  50. case letter
  51. when 97..122
  52. ncipher += letter.chr.upcase
  53. end
  54. end
  55. puts dec_vigenere(ncipher, key)
  56. else
  57. puts 'Unknown command'
  58. end
  59. puts
  60. puts 'Type <SPACE> to continue...'
  61. gets
Success #stdin #stdout 0.01s 6540KB
stdin
NIMGM IWYVC DLMLZ XNHHT MCWFD YWEXB QZMGB WNGXZ UTGER GXQPC ZACMV DNRNA QCCKZ XHESW GRWUA ICTUQ ZCQIR PUEVM OUZBK IRRIW DMIMZ UDIQW GSAHD QNWGM ETWNT LNWDB AUBWV WOSXQ ZECKJ RXYVM JPMKZ QNRWW ZSIMF YCZDM FNWNJ TJVWI SEWGJ WJRVI GTZXJ VNWWZ UCBBF RBUXM XEZXJ TNGWV ATZXJ MCIUM BEZMF VRIQW ETCMF WJVWQ OLMLZ ROSUU MTQYJ ICEXB DEAMV BCIVB QCPGZ UDIVW GNWGT IBXOM OOBXG EAXDO QDMGF XAIFW YMCGR YCISW GRBTE XNXYW GSDHL WNRUM ZDZXQ ZRXHK AMXMV RXYVK GLBBM SWWOI PIAVI ICMRV QTTTH YJPLB QLMII MWGLX MLKHE XNRXL QNWMI IOSUC YNMLK ELGHA EIJEV UDEXF YEUUI IBHHV ATZXT SVQXV MUBXC EAELA ANMLK WRQST QCMKK ERRVA MVWBI WWIVW ZTXTJ EYPDK QRMGK VNXRC FEAEV WVELV EQCBU HNWDK TAZGV WMYQM GTWIZ IMYSI DTIZV EUSUA ZOBKV TXWLB UOVXJ XJQEQ SUMGF YBHHD ANAER HVIWB DEVHL WYVRV ANAEV TJVWI SELXJ GXRQI USATE GNWVI ZSZXJ XAMFB UOVLT IBXOI BIMKI IJRJC XAQKV HNPDK AMUNE EDXHU MIAGF YBRHA AMUXJ TJWDD QUOEV WJYSW UNBWV TNRVM DQCXK SDWRV FLQGK IUPLO QNKXF YUEPI FUZBK IWIFM ESIBI IJPXB ULQLR XRSQR GDQVZ IDWHL GNATM SRVTC UPIKU IOMQQ FIWGV WCRHC FRMYF VCHXK ANAMR XZYHT MCWGE SCEWQ ANLNJ EESLZ PEXXE HJZDV FTWNK HNPDU ARIEZ XNIWL QLIYI EWGKQ EEMGM IAWOC UMMFV HNPXB ULQLR XNYUV AUAII IOIUW ZSZXJ IAZHZ OEATM SRVSW GRKXL BZYLA ANBTG XNWDT GTQEZ WNVSW GRTXS MNRFW YMCGR VKMWZ MIZXT IAXHA YAQLR ZNDYW GSUBV YGESZ APWLV VUIVI HOQKV WCYQM MRUXR YCEQB CUMEV WVSWA AUTTT MNVHB ZOCLE IBSPU QSXTJ YWIDZ YUZXI MNPDK AMUNE EDXHV QSBIR WLSQA UDMKV IYEUA QSUXD FAIVK AMUXL RNRLM YETBV YMIOM QCPTK SDXYI ZOCLG EAXDO QOVLI INPOM YEVMV XWSWZ QCZXU SWSWZ QDWZD ILIVB PAXIF VCIUK QQCXE SDWSW GVWGJ HJRVT MMMLL VNHHV ASUHP IWWHB PEVHL WNPHD QROKR GNEXF OOVMI MKYWQ ANAWV WJYWZ QSUXD FAIVL GPIKK EPIQM QLIIG VNRWQ ESIZV ICHHT MPXKV RCMVA MGMGV IUISI DTIZV RXYVV QCPXI GQSQA BAATJ EESLZ CUQWV PDRDM ZGMGU VNPDC FRMXE TAIPQ QRVHL WWSXA OOVMV RCSQA PEVMI ICIQQ DLIUF YLPHI UNABW SAQHM QTLXG VXKUM ESMKV RWSXA MILTE XUIVC ZSTXJ EDXUM ESQFG PNQHV FLMFF XMISI ESMXJ XEMJM ZEZXT IBXII OITX 
stdout
V1G3N3R3 3NCRYP70R

Encrypt or decrypt ? e/d

Unknown command

Type <SPACE> to continue...