コード例 #1
0
def result_page():
    """Returns result page with encoded or decoded
    message"""
    keyword = request.form['keyword']
    choice = request.form['choice']
    message = request.form['message']
    cipher = VigenereCipher(keyword)
    if choice == 'encode':
        result = cipher.encode(message)
    else:
        result = cipher.decode(message)
    if result is None:
        return render_template('exception.html')
    return render_template('result.html', result=result)
コード例 #2
0
class TestDecryptString(unittest.TestCase):
  
  def setUp(self):
    self.msg = VigenereCipher(KEY, CIPHERTEXT)
  
  def test_isinstance(self):
    self.assertIsInstance(self.msg, VigenereCipher)
  
  def test_isequals(self):
    check = self.msg.decrypt()
    expect = PLAINTEXT
    self.assertEquals(check, expect)
コード例 #3
0
 def test_combine_character_1(self):
     self.assertTrue(VigenereCipher.combine_character("E", "T") == "X")
コード例 #4
0
 def test_encode_spaces(self):
     cipher = VigenereCipher("TRAIN")
     encoded = cipher.encode("ENCODED IN PYTHON")
     self.assertTrue(encoded == "XECWQXUIVCRKHWA")
コード例 #5
0
 def test_encode_2(self):
     cipher = VigenereCipher("LeaRNinG")
     encoded = cipher.encode("LeaRNINGpyThON")
     assert encoded == "WIAIAQAMACTYBV"
コード例 #6
0
def test_decode():
    cipher = VigenereCipher('TRAIN')
    decode = cipher.decode('XECWQXUIVCRKHWA')
    assert decode == 'ENCODEDINPYTHON'
コード例 #7
0
from unittest import TestCase
from vigenere_cipher import VigenereCipher
ex = VigenereCipher('csucu')


class TestVigenereCipher(TestCase):
    def test_vigenere_cipher(self):
        self.assertEquals('A', ex.combine_character('h', 'a'), "fail")
        self.assertEquals('E', ex.combine_character('P', 'p'), "fail")
        self.assertEquals('Z', ex.combine_character('Y', 'B'), "fail")
        self.assertEquals(None, ex.combine_character('-', 'd'), "fail")
        self.assertEquals('C', ex.separate_character('a', 'y'), "fail")
        self.assertEquals(None, ex.separate_character(',', 'O'), "fail")
        self.assertEquals('H', ex.separate_character('L', 'e'), "fail")
        self.assertEquals(None, ex.separate_character('s', '!'), "fail")
        self.assertEquals('CSUCUCSUCU', ex.extend_keyword(10), "fail")
        self.assertEquals('', ex.extend_keyword(0), "fail")
        self.assertEquals('SSXYOLQGLIYBNMRGKALOTMXQORG',
                          ex.decode('ukrainiancatholicuniversity'), "fail")
        self.assertEquals('WCLCCPAUPWCLBQFKUOPCXWLUCVQ',
                          ex.encode('ukrainiancatholicuniversity'), "fail")
        self.assertEquals('', ex.encode(''), "fail")
        self.assertEquals('', ex.decode(''), "fail")
コード例 #8
0
 def test_encode_1(self):
     cipher = VigenereCipher("TRAIN")
     encoded = cipher.encode("ENCODEDINPYTHON")
     assert encoded == "XECWQXUIVCRKHWA"
コード例 #9
0
def test_encode_charecter():
	cipher = VigenereCipher("TRAIN")
	encoded = cipher.encode("E")
	assert encoded == "X"
コード例 #10
0
def test_encode():
	cipher = VigenereCipher("TRAIN")
	encoded = cipher.encode("ENCODEDINPYTHON")
	assert encoded == "XECWQXUIVCRKHWA"
コード例 #11
0
def test_decode():
	cipher = VigenereCipher("TRAIN")
	decoded = cipher.decode("XECWQXUIVCRKHWA")
	assert decoded == "ENCODEDINPYTHON"
コード例 #12
0
def test_extend_keyword():
	cipher = VigenereCipher("TRAIN")
	extended = cipher.extend_keyword(16)
	assert extended == "TRAINTRAINTRAINT"
コード例 #13
0
def test_encode_lowercase():
	cipher = VigenereCipher("TRain")
	encoded = cipher.encode("encoded in Python")
	assert encoded == "XECWQXUIVCRKHWA"
コード例 #14
0
from polyalphabetic_cipher import PolyalphabeticCipher
from monoalphabetic_cipher import MonoalphabeticCipher
from vigenere_cipher import VigenereCipher
from common.frequency_analysis import LetterFrequency
from common.kasiski_test import KasiskiTest
from hill_system import HillSystem

messages = ["MFE RLH WSR LHW BZN BNW SRX DEC INQ RNW JHL RBW BNL DER HQN DEQ BUJ WSH UZS RNN LDE RDA HJH LQC RWS HUM DTR EHU ICH NWN CDU JRE WSH ULD UDM DCP BWN AER RBW ZHU QRM CHP RIH UPX SRE RHE ZSB LRI RNI BIB WBU HQH WSW FQ", "YBR GPT OOY CBC GUG SNR TCW MVF RMU GJC MUI RCC UZV LJX BAJ DNU RTJ LLF KFF YBL JMZ NWG YNY JYB RRV HCG VLL MGH DKB NCN JHF NRW YNY JDV VTL ZGO RPX IAR QBY PNL YYI RLG YTV LYI GUG SEN OMZ NVA YSS IRP DXR SGS CGR UFS BHP GLN VLX BNI CJP BYT JXG BEJ NHF MZN BSR MYE NGS ZVA BBB REC YBR OCW LVR QFL RNL IER RNZ MSE MRA RGR NHT XGQ FRQ MZL OEY NHF QGI HBG CAI YIC YIU RJU OFT PFM CEC FFY LJF LTR LZG ORP XIE GMQ IBX YYN UVL LMV AYM OAQ PJX GUM ZMN ABI CZR LXC BAQ", "OTG WRV RHU GXO XUQ UEK VYO TSE NYU NSI YSH MHB BUR ZTR CCD DAK MHC ALI OJZ UOT JYC KFN KIO THO GWK Z", "ESP PYR TYP PCE STY VDZ QST DPB FLE TZY DLD LYL AAC ZIT XLE TZY EZC PLW TEJ ESP ASJ DTN TDE EST YVD CPL WTE JTD LYL AAC ZIT XLE TZY EZS TDP BFL ETZ YDE SPX LES PXL ETN TLY OZP DYE NLC P"]#, "JAKXQ SWECW MMJBK TQMCM LWCXJ BNEWS XKRBO IAOBI NOMLJ GUIMH YTACF ICVOE BGOVC WYRCV KXJZV SMRXY VPOVB UBIJK OVCVK RXBOE ASZVR AOXQS WECVO QJHSG ROXWJ MCXQF OIRGZ VRAOJ RJOMB DBMVS CIESX MBDBM VSKRM GYFHA KXQSW ECWME UWXHD QDMXB KPUCN HWIWF NFCKA SKXNF DLJBY RNOBI YFSQN HRIYV IWRQS WCGKC BHRVN SSWYF SQNTS ZNWCT AWWIB SFIWW CTAWW IWWXI RGKRN LZIAW WIWHK PNFBS ASVIE SXMBD BMVSK RMGYC NGKPU CNHWI WFNFC KASKX NFDLJ BYRNO BIYFS QNHRI NBQMW SOVBO IWCVB INWCT AWWIO WFIRG ZVRAO WNJOR RGZVR AORRB OMBDB MVSOP NJORR GZVRA OXQWB XNSXM BDBMV SPMOH OIWWC TAWWI"] # book example problem to test vigenere code!
messages = ["ckaikmfmozgatywtzvchxhdyecszfzyidcmdjpfgtajalzoordvidbozcgszwcdlcsxxbltdisszacznuaozqczigdmmnnfweggrhshoozfzozdlcgfhsyymvtfzmmvahqjfppncmqxtooozfzmwrsoznjasrqkjvqjaoznjasrqkjwh".upper()]

polyCi = PolyalphabeticCipher()
monCi = MonoalphabeticCipher()
vigCi = VigenereCipher()
# do it all for me!
for msgNum, msg in enumerate(messages):   
    # 1. Find the Index of Coincidence and use it to decide which are most likely monoalphabetic (Note: I have specifically chosen messages so the IC is a good indicator of whether the message is monoalphabetic).
    msg = msg.replace(' ' , '')
    msgIC = polyCi.calcIC(msg)
    isPoly = polyCi.isPolyalphabetic(msgIC)
    
    print "\nAnalyzing message number %d: %s\n" % (msgNum+1, msg)
    print "Message IC: %.4f" % msgIC
    print "Message is likely %s\n" % ("polyalphabetic" if isPoly else "monoalphabetic")
    
    # 3. For the ones which you suspect aren't monoalphabetic, they have been encrypted either using a Vignere cipher or Hills system. In order to differentiate, we shall apply the standard Vignere tests for keyword - the messages have specifically been chosen so that a Hills system message will be recognizable by how these tests perform. 
    if isPoly:
        # (a) Find all repeated strings of lengths 3 or more and apply the Kasiski test.
        kt = KasiskiTest()        
        kasiskiFailed = False
        repeatedSubstrs = kt.getRepeatedSubstrs(msg, 3)     
        if repeatedSubstrs:
コード例 #15
0
def test_encode_lowercase(valid_cipher):
    cipher = VigenereCipher("TRain")
    assert cipher.encode("encoded in Python") == "XECWQXUIVCRKHWA"
コード例 #16
0
 def test_extend_keyword(self):
     cipher = VigenereCipher("TRAIN")
     extended = cipher.extend_keyword(16)
     self.assertTrue(extended == "TRAINTRAINTRAINT")
コード例 #17
0
 def test_separate_character_2(self):
     self.assertTrue(VigenereCipher.separate_character("E", "R") == "N")
コード例 #18
0
def test_encode_character():
    chip = VigenereCipher("TRAIN")
    encoded = chip.encode("E")
    assert "X" == encoded
コード例 #19
0
def test_encode_lowercase():
    chip = VigenereCipher("TRAIN")
    encoded = chip.encode("encoded in python")
    assert "XECWQXUIVCRKHWA" == encoded
コード例 #20
0
def test_extend_keyword():
    vigenere = VigenereCipher("TRAIN")
    extended = vigenere.extend_keyword(16)
    assert "TRAINTRAINTRAINT" == extended
コード例 #21
0
def test_extend_keyword():
    cipher = VigenereCipher('TRAIN')
    extended = cipher.extend_keyword(16)
    assert extended == 'TRAINTRAINTRAINT'
コード例 #22
0
def test_encode():
    chip = VigenereCipher("TRAIN")
    encoded = chip.encode("ENCODED IN PYTHON")
    assert "XECWQXUIVCRKHWA" == encoded
コード例 #23
0
def test_encode_character():
    cipher = VigenereCipher('TRAIN')
    encoded = cipher.encode('E')
    assert encoded == 'X'
コード例 #24
0
def test_encode_lowercase(valid_cipher):
    cipher = VigenereCipher("TRain")
    assert cipher.encode("encoded in Python") == "XECWQXUIVCRKHWA"
コード例 #25
0
ファイル: test_vigenere_cipher.py プロジェクト: maxymkuz/cs_2
 def test_encode(self):
     cipher = VigenereCipher("TRAIN")
     encoded = cipher.encode("ENCODEDINPYTHON")
     self.assertEqual(encoded, "XECWQXUIVCRKHWA")
コード例 #26
0
def pytest_funcarg__valid_cipher(request):
    return VigenereCipher("TRAIN")
コード例 #27
0
 def test_encode_character(self):
     cipher = VigenereCipher("TRAIN")
     encoded = cipher.encode("E")
     self.assertTrue(encoded == "X")
コード例 #28
0
 def test_encode_character():
     cipher = VigenereCipher("TRAIN")
     encoded = cipher.encode("E")
     assert encoded == "X"
コード例 #29
0
 def test_encode_lowercase(self):
     cipher = VigenereCipher("TRain")
     encoded = cipher.encode("encoded in Python")
     self.assertTrue(encoded == "XECWQXUIVCRKHWA")
コード例 #30
0
 def test_encode_lowercase():
     cipher = VigenereCipher("TRain")
     encoded = cipher.encode("encoded in Python")
     assert encoded == "XECWQXUIVCRKHWA"
コード例 #31
0
 def test_combine_character_2(self):
     self.assertTrue(VigenereCipher.combine_character("N", "R") == "E")
コード例 #32
0
 def test_extend_keyword():
     cipher = VigenereCipher("TRAIN")
     extended = cipher.extend_keyword(16)
     assert extended == "TRAINTRAINTRAINT"
コード例 #33
0
 def test_separate_character_1(self):
     self.assertTrue(VigenereCipher.separate_character("X", "T") == "E")
コード例 #34
0
 def test_decode():
     cipher = VigenereCipher("TRAIN")
     decoded = cipher.decode("XECWQXUIVCRKHWA")
     assert decoded == "ENCODEDINPYTHON"
コード例 #35
0
 def test_decode(self):
     cipher = VigenereCipher("TRAIN")
     decoded = cipher.decode("XECWQXUIVCRKHWA")
     self.assertTrue("ENCODEDINPYTHON" == decoded)
コード例 #36
0
def test_encode_lowercase():
    cipher = VigenereCipher('TRain')
    encoded = cipher.encode('encoded in Python')
    assert encoded == 'XECWQXUIVCRKHWA'
コード例 #37
0
 def setUp(self):
   self.msg = VigenereCipher(KEY, PLAINTEXT)
コード例 #38
0
def test_encode():
    cipher = VigenereCipher('TRAIN')
    encoded = cipher.encode('ENCODEDINPYTHON')
    assert encoded == 'XECWQXUIVCRKHWA'
コード例 #39
0
 def setUp(self):
   self.msg = VigenereCipher(KEY, CIPHERTEXT)
コード例 #40
0
def cipher():
    return VigenereCipher("TRAIN")