Skip to content

Instantly share code, notes, and snippets.

@kimmobrunfeldt
Created June 19, 2016 20:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kimmobrunfeldt/41d1050f52ceb8c0cc65a90ef31f19ea to your computer and use it in GitHub Desktop.
Save kimmobrunfeldt/41d1050f52ceb8c0cc65a90ef31f19ea to your computer and use it in GitHub Desktop.
Älä koskaan kirjota omaa cryptoa.. paitsi ekan kerran
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import random
from math import floor
kirjaimet = {u' ': u'00', u'!': u'01', u'"': u'02', u'#': u'03', u'$': u'04', u'%': u'05', u'&': u'06', u'\'': u'07', u'(': u'08', u')': u'09', u'*': u'10', u'+': u'11', u',': u'12', u'-': u'13', u'.': u'14', u'/': u'15', u'0': u'16', u'1': u'17', u'2': u'18', u'3': u'19', u'4': u'20', u'5': u'21', u'6': u'22', u'7': u'23', u'8': u'24', u'9': u'25', u':': u'26', u';': u'27', u'<': u'28', u'=': u'29', u'>': u'30', u'?': u'31', u'@': u'32', u'A': u'33', u'B': u'34', u'C': u'35', u'D': u'36', u'E': u'37', u'F': u'38', u'G': u'39', u'H': u'40', u'I': u'41', u'J': u'42', u'K': u'43', u'L': u'44', u'M': u'45', u'N': u'46', u'O': u'47', u'P': u'48', u'Q': u'49', u'R': u'50', u'S': u'51', u'T': u'52', u'U': u'53', u'V': u'54', u'W': u'55', u'X': u'56', u'Y': u'57', u'Z': u'58', u'[': u'59', u'\\': u'60', u']': u'61', u'^': u'62', u'_': u'63', u'`': u'64', u'a': u'65', u'b': u'66', u'c': u'67', u'd': u'68', u'e': u'69', u'f': u'70', u'g': u'71', u'h': u'72', u'i': u'73', u'j': u'74', u'k': u'75', u'l': u'76', u'm': u'77', u'n': u'78', u'o': u'79', u'p': u'80', u'q': u'81', u'r': u'82', u's': u'83', u't': u'84', u'u': u'85', u'v': u'86', u'w': u'87', u'x': u'88', u'y': u'89', u'z': u'90', u'{': u'91', u'|': u'92', u'}': u'93', u'~': u'94', u'ä': u'95', u'å': u'96', u'ö': u'97', u'§': u'98', u'½': u'99'}
uukirjaimet = {u' ': [u'000',u'098',u'196',u'294',u'392',u'490',u'588',u'686',u'784',u'882',u'980'], u'!': [u'001',u'099',u'197',u'295',u'393',u'491',u'589',u'687',u'785',u'883',u'981'], u'"': [u'002',u'100',u'198',u'296',u'394',u'492',u'590',u'688',u'786',u'884',u'982'], u'#': [u'003',u'101',u'199',u'297',u'395',u'493',u'591',u'689',u'787',u'885',u'983'], u'$': [u'004',u'102',u'200',u'298',u'396',u'494',u'592',u'690',u'788',u'886',u'984'], u'%': [u'005',u'103',u'201',u'299',u'397',u'495',u'593',u'691',u'789',u'887',u'985'], u'&': [u'006',u'104',u'202',u'300',u'398',u'496',u'594',u'692',u'790',u'888',u'986'], u'\'': [u'007',u'105',u'203',u'301',u'399',u'497',u'595',u'693',u'791',u'889',u'987'], u'(': [u'008',u'106',u'204',u'302',u'400',u'498',u'596',u'694',u'792',u'890',u'988'], u')': [u'009',u'107',u'205',u'303',u'401',u'499',u'597',u'695',u'793',u'891',u'989'], u'*': [u'010',u'108',u'206',u'304',u'402',u'500',u'598',u'696',u'794',u'892',u'990'], u'+': [u'011',u'109',u'207',u'305',u'403',u'501',u'599',u'697',u'795',u'893',u'991'], u',': [u'012',u'110',u'208',u'306',u'404',u'502',u'600',u'698',u'796',u'894',u'992'], u'-': [u'013',u'111',u'209',u'307',u'405',u'503',u'601',u'699',u'797',u'895',u'993'], u'.': [u'014',u'112',u'210',u'308',u'406',u'504',u'602',u'700',u'798',u'896',u'994'], u'/': [u'015',u'113',u'211',u'309',u'407',u'505',u'603',u'701',u'799',u'897',u'995'], u'0': [u'016',u'114',u'212',u'310',u'408',u'506',u'604',u'702',u'800',u'898',u'996'], u'1': [u'017',u'115',u'213',u'311',u'409',u'507',u'605',u'703',u'801',u'899',u'997'], u'2': [u'018',u'116',u'214',u'312',u'410',u'508',u'606',u'704',u'802',u'900',u'998'], u'3': [u'019',u'117',u'215',u'313',u'411',u'509',u'607',u'705',u'803',u'901',u'999'], u'4': [u'020',u'118',u'216',u'314',u'412',u'510',u'608',u'706',u'804',u'902'], u'5': [u'021',u'119',u'217',u'315',u'413',u'511',u'609',u'707',u'805',u'903'], u'6': [u'022',u'120',u'218',u'316',u'414',u'512',u'610',u'708',u'806',u'904'], u'7': [u'023',u'121',u'219',u'317',u'415',u'513',u'611',u'709',u'807',u'905'], u'8': [u'024',u'122',u'220',u'318',u'416',u'514',u'612',u'710',u'808',u'906'], u'9': [u'025',u'123',u'221',u'319',u'417',u'515',u'613',u'711',u'809',u'907'], u':': [u'026',u'124',u'222',u'320',u'418',u'516',u'614',u'712',u'810',u'908'], u';': [u'027',u'125',u'223',u'321',u'419',u'517',u'615',u'713',u'811',u'909'], u'<': [u'028',u'126',u'224',u'322',u'420',u'518',u'616',u'714',u'812',u'910'], u'=': [u'029',u'127',u'225',u'323',u'421',u'519',u'617',u'715',u'813',u'911'], u'>': [u'030',u'128',u'226',u'324',u'422',u'520',u'618',u'716',u'814',u'912'], u'?': [u'031',u'129',u'227',u'325',u'423',u'521',u'619',u'717',u'815',u'913'], u'@': [u'032',u'130',u'228',u'326',u'424',u'522',u'620',u'718',u'816',u'914'], u'A': [u'033',u'131',u'229',u'327',u'425',u'523',u'621',u'719',u'817',u'915'], u'B': [u'034',u'132',u'230',u'328',u'426',u'524',u'622',u'720',u'818',u'916'], u'C': [u'035',u'133',u'231',u'329',u'427',u'525',u'623',u'721',u'819',u'917'], u'D': [u'036',u'134',u'232',u'330',u'428',u'526',u'624',u'722',u'820',u'918'], u'E': [u'037',u'135',u'233',u'331',u'429',u'527',u'625',u'723',u'821',u'919'], u'F': [u'038',u'136',u'234',u'332',u'430',u'528',u'626',u'724',u'822',u'920'], u'G': [u'039',u'137',u'235',u'333',u'431',u'529',u'627',u'725',u'823',u'921'], u'H': [u'040',u'138',u'236',u'334',u'432',u'530',u'628',u'726',u'824',u'922'], u'I': [u'041',u'139',u'237',u'335',u'433',u'531',u'629',u'727',u'825',u'923'], u'J': [u'042',u'140',u'238',u'336',u'434',u'532',u'630',u'728',u'826',u'924'], u'K': [u'043',u'141',u'239',u'337',u'435',u'533',u'631',u'729',u'827',u'925'], u'L': [u'044',u'142',u'240',u'338',u'436',u'534',u'632',u'730',u'828',u'926'], u'M': [u'045',u'143',u'241',u'339',u'437',u'535',u'633',u'731',u'829',u'927'], u'N': [u'046',u'144',u'242',u'340',u'438',u'536',u'634',u'732',u'830',u'928'], u'O': [u'047',u'145',u'243',u'341',u'439',u'537',u'635',u'733',u'831',u'929'], u'P': [u'048',u'146',u'244',u'342',u'440',u'538',u'636',u'734',u'832',u'930'], u'Q': [u'049',u'147',u'245',u'343',u'441',u'539',u'637',u'735',u'833',u'931'], u'R': [u'050',u'148',u'246',u'344',u'442',u'540',u'638',u'736',u'834',u'932'], u'S': [u'051',u'149',u'247',u'345',u'443',u'541',u'639',u'737',u'835',u'933'], u'T': [u'052',u'150',u'248',u'346',u'444',u'542',u'640',u'738',u'836',u'934'], u'U': [u'053',u'151',u'249',u'347',u'445',u'543',u'641',u'739',u'837',u'935'], u'V': [u'054',u'152',u'250',u'348',u'446',u'544',u'642',u'740',u'838',u'936'], u'W': [u'055',u'153',u'251',u'349',u'447',u'545',u'643',u'741',u'839',u'937'], u'X': [u'056',u'154',u'252',u'350',u'448',u'546',u'644',u'742',u'840',u'938'], u'Y': [u'057',u'155',u'253',u'351',u'449',u'547',u'645',u'743',u'841',u'939'], u'Z': [u'058',u'156',u'254',u'352',u'450',u'548',u'646',u'744',u'842',u'940'], u'[': [u'059',u'157',u'255',u'353',u'451',u'549',u'647',u'745',u'843',u'941'], u'\\': [u'060',u'158',u'256',u'354',u'452',u'550',u'648',u'746',u'844',u'942'], u']': [u'061',u'159',u'257',u'355',u'453',u'551',u'649',u'747',u'845',u'943'], u'^': [u'062',u'160',u'258',u'356',u'454',u'552',u'650',u'748',u'846',u'944'], u'_': [u'063',u'161',u'259',u'357',u'455',u'553',u'651',u'749',u'847',u'945'], u'`': [u'064',u'162',u'260',u'358',u'456',u'554',u'652',u'750',u'848',u'946'], u'a': [u'065',u'163',u'261',u'359',u'457',u'555',u'653',u'751',u'849',u'947'], u'b': [u'066',u'164',u'262',u'360',u'458',u'556',u'654',u'752',u'850',u'948'], u'c': [u'067',u'165',u'263',u'361',u'459',u'557',u'655',u'753',u'851',u'949'], u'd': [u'068',u'166',u'264',u'362',u'460',u'558',u'656',u'754',u'852',u'950'], u'e': [u'069',u'167',u'265',u'363',u'461',u'559',u'657',u'755',u'853',u'951'], u'f': [u'070',u'168',u'266',u'364',u'462',u'560',u'658',u'756',u'854',u'952'], u'g': [u'071',u'169',u'267',u'365',u'463',u'561',u'659',u'757',u'855',u'953'], u'h': [u'072',u'170',u'268',u'366',u'464',u'562',u'660',u'758',u'856',u'954'], u'i': [u'073',u'171',u'269',u'367',u'465',u'563',u'661',u'759',u'857',u'955'], u'j': [u'074',u'172',u'270',u'368',u'466',u'564',u'662',u'760',u'858',u'956'], u'k': [u'075',u'173',u'271',u'369',u'467',u'565',u'663',u'761',u'859',u'957'], u'l': [u'076',u'174',u'272',u'370',u'468',u'566',u'664',u'762',u'860',u'958'], u'm': [u'077',u'175',u'273',u'371',u'469',u'567',u'665',u'763',u'861',u'959'], u'n': [u'078',u'176',u'274',u'372',u'470',u'568',u'666',u'764',u'862',u'960'], u'o': [u'079',u'177',u'275',u'373',u'471',u'569',u'667',u'765',u'863',u'961'], u'p': [u'080',u'178',u'276',u'374',u'472',u'570',u'668',u'766',u'864',u'962'], u'q': [u'081',u'179',u'277',u'375',u'473',u'571',u'669',u'767',u'865',u'963'], u'r': [u'082',u'180',u'278',u'376',u'474',u'572',u'670',u'768',u'866',u'964'], u's': [u'083',u'181',u'279',u'377',u'475',u'573',u'671',u'769',u'867',u'965'], u't': [u'084',u'182',u'280',u'378',u'476',u'574',u'672',u'770',u'868',u'966'], u'u': [u'085',u'183',u'281',u'379',u'477',u'575',u'673',u'771',u'869',u'967'], u'v': [u'086',u'184',u'282',u'380',u'478',u'576',u'674',u'772',u'870',u'968'], u'w': [u'087',u'185',u'283',u'381',u'479',u'577',u'675',u'773',u'871',u'969'], u'x': [u'088',u'186',u'284',u'382',u'480',u'578',u'676',u'774',u'872',u'970'], u'y': [u'089',u'187',u'285',u'383',u'481',u'579',u'677',u'775',u'873',u'971'], u'z': [u'090',u'188',u'286',u'384',u'482',u'580',u'678',u'776',u'874',u'972'], u'{': [u'091',u'189',u'287',u'385',u'483',u'581',u'679',u'777',u'875',u'973'], u'|': [u'092',u'190',u'288',u'386',u'484',u'582',u'680',u'778',u'876',u'974'], u'}': [u'093',u'191',u'289',u'387',u'485',u'583',u'681',u'779',u'877',u'975'], u'~': [u'094',u'192',u'290',u'388',u'486',u'584',u'682',u'780',u'878',u'976'], u'ä': [u'095',u'193',u'291',u'389',u'487',u'585',u'683',u'781',u'879',u'977'], u'å': [u'096',u'194',u'292',u'390',u'488',u'586',u'684',u'782',u'880',u'978'], u'ö': [u'097',u'195',u'293',u'391',u'489',u'587',u'685',u'783',u'881',u'979']}
kaikkikirjaimet = u' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~äåö'
#print ukirjaimet[u'ä']
def salaus(teksti,avain):
global kirjaimet
teksti = teksti.decode('utf8')
avain = avain.decode('utf8')
tekstinumero = u''
for kirjain in teksti:
kaksinumero = kirjaimet[kirjain]
tekstinumero = tekstinumero + str(kaksinumero).decode('utf8')
avainnumero = u''
for kirjain in avain:
kaksinumero = kirjaimet[kirjain]
avainnumero = avainnumero + str(kaksinumero).decode('utf8')
print 'Avainnumero: %i'% int(avainnumero)
print 'Kokonumero: %i'% int(tekstinumero)
salattu = floor(int(tekstinumero)/int(avainnumero))
jaama = int(tekstinumero)%int(avainnumero)
salattu = str('%i'%int(salattu)).decode('utf8')
if '.' in salattu:
salattu = salattu.split('.')[0]
print 'Salanumero: %s'% salattu
i = 0
hajotettu = u''
for kirjain in salattu:
if i == 2:
hajotettu = hajotettu + u' ' + kirjain
i = 0
else:
hajotettu = hajotettu + kirjain
i += 1
lista = hajotettu.split(' ')
roska = u''
for sarja in lista:
if len(sarja) < 2:
roska = u'¨' + sarja
salattusana = u''
for kirjain in lista:
for keke, numerolista in kirjaimet.items():
if kirjain == numerolista:
salattusana = salattusana + keke
salattusana = salattusana + roska + u'~' + str(jaama)
return salattusana
def purku(teksti,avain):
global kirjaimet
#teksti = teksti.decode('utf8')
avain = avain.decode('utf8')
if u'¨' in teksti:
roska = teksti.split(u'¨')[1].split(u'~')[0]
jaama = teksti.split(u'¨')[1].split(u'~')[1]
teksti = teksti.split(u'¨')[0]
else:
roska = u''
jaama = teksti.split(u'~')[1]
salattunumero = u''
for kirjain in teksti:
for keke, numerolista in kirjaimet.items():
if kirjain == keke:
salattunumero = salattunumero + numerolista
avainnumero = u''
for kirjain in avain:
kaksinumero = kirjaimet[kirjain]
avainnumero = avainnumero + str(kaksinumero).decode('utf8')
salattunumero = salattunumero + roska
print salattunumero
print 'Salanumero:',salattunumero
print 'Avainnumero:', avainnumero
kokonumero = floor(int(salattunumero+jaama)*int(avainnumero))
kokonumero = str('%i'% int(kokonumero)).decode('utf8')
print 'Kokonumero: ',kokonumero
i = 0
hajotettu = u''
for kirjain in kokonumero:
if i == 2:
hajotettu = hajotettu + u' ' + kirjain
i = 0
else:
hajotettu = hajotettu + kirjain
i += 1
lista = hajotettu.split(' ')
selvateksti = u''
for kirjain in lista:
for keke, numerolista in kirjaimet.items():
if kirjain == numerolista:
selvateksti = selvateksti + keke
return selvateksti
tekstia = raw_input('Teksti: ')
avain = raw_input('Avain: ')
salattu = salaus(tekstia,avain)
print 'Salateksti:', salattu
print purku(salattu,avain)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment