Differences

This shows you the differences between two versions of the page.

Link to this comparison view

ic:labs:01 [2026/02/24 10:31]
marios.choudary
ic:labs:01 [2026/02/27 08:07] (current)
razvan.smadu [Laboratorul 01 - Introducere]
Line 1: Line 1:
 ===== Laboratorul 01 - Introducere ===== ===== Laboratorul 01 - Introducere =====
  
-În afară de exercițiile 0/0b, puteți lucra acest laborator folosind și platforma Google Colab, accesând [[https://​colab.research.google.com/​github/​ACS-IC-labs/​IC-labs/​blob/​main/​labs/​lab01/​lab1.ipynb|acest]] link, cu excepția exercițiului bonus. Un scurt tutorial pentru utilizarea platformei poate fi găsit [[https://​docs.google.com/​document/​d/​1Dcnyv9wTfWJx8CEgnR6OgLbHAO7XD1BXGjwOAMAEmlc/​edit|aici]]. ​+Puteți lucra acest laborator folosind și platforma Google Colab, accesând [[https://​colab.research.google.com/​github/​ACS-IC-labs/​IC-labs/​blob/​main/​labs/​lab01/​lab1.ipynb|acest]] link, cu excepția exercițiului bonus și eventual 0/0b. Un scurt tutorial pentru utilizarea platformei poate fi găsit [[https://​docs.google.com/​document/​d/​1Dcnyv9wTfWJx8CEgnR6OgLbHAO7XD1BXGjwOAMAEmlc/​edit|aici]]. ​
  
 ==== Python3 Crash Course ==== ==== Python3 Crash Course ====
Line 337: Line 337:
 </​spoiler>​ </​spoiler>​
  
-== Bytes în Python == 
-Să considerăm exemplele de mai jos: 
-<code python> 
-text1 = "Ana are mere" 
-text2 = b"Ana are mere" 
-print(type(text1)) ​ # <class '​str'>​ 
-print(type(text2)) ​ # <class '​bytes'>​ 
-</​code>​ 
  
-Ambele variabile stochează aceeași informație. Diferența constă în modul cum sunt păstrate datele intern, cele două texte fiind codificate în 2 obiecte de tipuri diferite ​(string și bytes). În timpul laboratoarelor vom lucra de foarte multe ori cu tipul string, dar unele biblioteci externe pot necesita transformarea datelor din formatul string în formatul bytes.+=== Exercițiul #0 - O criptare ​(2p===
  
-=== Exercițiul #0 o criptare ===+Folosiți orice cod vreți, generat cum vreți voi (GenAI, etc.), pentru a cripta slide-ul de titlu din curs (slide 4) https://​curs.upb.ro/​2025/​mod/​resource/​view.php?​id=120046 astfel încât să obțineți două variante diferite:
  
-Folosiți orice cod vreți, generat cum vreți voi (GenAI, etc.), pentru a cripta ​slide-ul ​de titlu din curs (slide 4): +a) Slide-ul criptat ca în slide-ul 2 (se vede ceva dar nu se înțelege). Salvați slide-ul ​ca o imagine ​(e.g., screenshot) și apoi faceți criptarea.
-https://​curs.upb.ro/​2025/​mod/​resource/​view.php?​id=120046+
  
-astfel încât ​să obțineți ​2 variante diferite: a) slide-ul criptat ca în slide-ul 2 (se vede ceva dar nu se înțelege);​ doar textul criptatcodificat Base64 (ca în slide-ul 3). Salvați slide-ul ca o imagine ​(e.g. screenshotși apoi faceți criptarea pentru primul pas.+<note tip> 
 +Ca să obțineți ​ceva asemănător cu slide-ul 2, folosiți un block cipher dar fără random IV (e.g. mod ECB). 
 +</​note>​
  
-=== Exercițiul #0b - statistici ​în alte limbi ===+b) Doar textul de pe slide criptat, codificat Base64 (ca în slide-ul 3).
  
-Precum am arătat la curs, faceți tabelul de frecvențe pentru următoarele limbi: +=== Exercițiul #0b - Statistici în alte limbi (3p) === 
-engleză + 
-română +Precum am arătat la curs, faceți tabelul de frecvențe pentru următoarele limbi: englezăromână ​și rusă.
-rusă+
  
 Pentru asta folosiți orice text (suficient de lung) doriți de pe internet (Wikipedia, Enciclopedii,​ Pagini, Cărți, etc.). Pentru asta folosiți orice text (suficient de lung) doriți de pe internet (Wikipedia, Enciclopedii,​ Pagini, Cărți, etc.).
  
-Apoi decriptați următoarele string-uri care au fost criptate cu substitution cipher fiecare în limba lor. +Apoi decriptați următoarele string-uri care au fost criptate cu substitution cipher fiecare în limba lor. O metodă simplă este să mapați frecvențele:​ litera cu frecvența cea mai mare în textul criptat (ciphertext) corespunde cu litera cea mai frecventă în text-ul necriptat (tabel făcut de voi).
-O metodă simplă este să mapați frecvențele:​ litera cu frecvența cea mai mare în textul criptat (ciphertext) +
-corespunde cu litera cea mai frecventă în text-ul necriptat (tabel făcut de voi).+
  
 +<​note>​
 +Este posibil să nu meargă foarte bine din prima. Posibile lucruri de folos:
 +  - să vă asigurați că ați generat tabelul de frecvențe cu un text suficient de lung în limba respectivă (eventual comparați și cu ce mai găsiți gata făcut pe internet);
 +  - să folosiți și un tabel de frecvență cu câte 2 (eventual și 3) litere și astfel să corectați maparea inițială.
 +</​note>​
  
-Îsdăhăţrx mqlahalyoh Gq fX xGqsănX ma tqmq fqmorXhqmxrq yaxânl ​mxnlqyqyq yoh, xa lqşlb ​în înlâsdlnxhqx slhqyolClnml îngă ​llnbhq qyxa qhxa făhă slnbqlxh mlnml înţqyqdbqCămr mqyq făhă slnbqyaxânl mxnlqyqyq, n-xa yaxb ma glnq anbqyqs nIxh mqyq înţqyqdbq xa yaxb anbqyqsqn ​în fXGq, olxbă ma mxnlqyqyq ​yoh. Lxh slhqyq înlâhtllnl, xa xţlslb loxbq şl xa xloshlbIxh yX slqtal nodbll G-X fXmab GbhlzhxqIXlXslhqyq fInqIqşlbh înlha înlâhtllnhqx yalAbanml G-Xa lqşlqdbxb loxbq xmqyq fqmorXhq ​şl xa îndolobl mxnlqyqyq yoh. Şl mqyq făhă slnbq xa tlg mXbhq mqyq înţqyqdbq: ​Lxb l-nq lln anbqyqsqnay fOGlhamX Gq Glbnz mxnlqyqyq nOXGbhqLxh mqyq înţqyqdbq yq-xa hXGdangtlmânl: Na, mX na masfX GX na XtanhzX nlml nOX şl nlml fOAXMxl blnq nqhZqb lX mql mq fânl şl masdXhXbl dqnbla fOlLqml dyqmânl ​qyq mX GX masdqhq, X fqnlb slhqyq ​şl mqyq mq qhxa ZxbX xa lnlhxb ​ma qy yX nablă şX G-X înmblGIxh mxl dq ahsXxa Goglb şl mqyqyxdbq fqmorXhqtlmânl: Loxsnq, Loxsnq, ​lqGmlHlq-nq nOAXIxh qy, hXGdangânlX tlgAlqfXhXb tlg fOAX: Na fX manogm ​dq fOlLhqdb xmqqlxdhlfqzhqXblmX na şblbl tIaxnlml mQXGay mând fInq Play Oshayal+<file text ciphertext1.txt>​ 
 +ÎsDăhăţrX mQhaHryoh gq Fx xgqsăNX ma tqmq pqmroxhQmxHq Yaânl ​mxnlqyqyq yoh, xa rqŞrb ​în înbâsdrnxhqx srhqYARMrnmR îngă ​lRnbhq qYq qhxa păhă srnbqrxh MrNmr înŢqyQdBqMăMr mqyq păhă srnbqYaânl mXnlqyQyq, n-Xa yaxb mA grnq anBlqyqsnRxh mqyq îNţqyqdbq xa Yaxb anblqyqsn ​în fxGq, olxbĂ ma mxNlqyqyq ​yoh. Lxh srhqyQ înbÂhtrrnl, xa xţrdRb boxBQ Şr xa xlohsrbRXh yX srqtay NOdţrr g-X Pămab gbhRzxhqRxbăsrhQyq frnqRqşRţr înbha îNbâsdrnxhqx YarXbaNmr g-xa lqşbQdbxb boXbq xmqyq pqmRoxhq ​şr xA îsdolovrb mxNlqyqyq yoH. Şr mqYq păhă srNbq Xa trg Măbhq ​mqyq înţqyqdbq: ​Lxţr-nq lrN anblQyqsNay fogbhamă gQ gbrnz mxnlqyQyq noxGbHqLxH mQyQ înţqyqdbQ Yq-xa hăgdanGtRmânl: Na, mx nA maSFx gă na Nq xUanzĂ nrmr noaă şR nrmr foaăSxr vrnq sqHzqţr yX mqr mq fânL şR masdăhxŢr dqnbha forLqmR dYqmânl ​qyq mX gă mAsdqhq, X fqnrb srHqyq ​şR mQYq mq Qhxa zxbx xa rnbhxb ​ma qy YX nanbă şx g-x înmwrgRXh sxr dQ ahsăxA GogrB şr mqyqyXybq pqmroXhqtrmânl: Loxsnq, Loxsnq, ​lqgmwrlq-nq noAăRxh qy, hĂgdaNtânlx trgXlqfăhxb trm foaă: Na fă Manogm ​dq forLhQdb xmqqxdHrfqzwqxţrmă na şbrţr traxnrMR mqxgaY mânl fRnq PrAy OsayAr. 
 +</​file>​
  
-Bwq klngdos ​op wqxfqn ​clll fq lkkw bqn fkhglng mwo bffk bwqkh lxmif xng mwnb fab b fqqb bwq fhlgqzhffsPlfq fp bwqs mqlq ffflliw xng flfq mqlq mlfqFfl bwq ffflliw bffk bwqkh lxmif xng bffk nf fli m b b bwqs. Cab bwq mlfq bffk fli ln fqffqif m b b bwqkh lxmifCab bwq fhlgqzhffs mxf ix bqxng bwqy xll fiyscqlqg xng flqdbXng xb slgnlzwb bwl lq mxf mly sx gqCqwl ig, bwq fhlgqzhffs ffsqbwg f yq fab b fqqb wl s. Bwqn xll bwf fq fkhglng xl fq xng b lssqg bwqkh lxmifXng bwq ffflliw fxlg fnb f bwq mlfqGl f q if f sfl b lfl l f l lxmif x lq g flng fabCab bwq mlfq xnfclq qg bwqsfxylngNx yiqfb bwl lq fq n b qn fzw fl l f xng y fG f yq lxbwl l b f bwq s b x b fqllxng cay f l y f l fqlf q fXng cwl iq bwqy m qnb b f cay, bwq fhlgqzhffs fxs qxng bwqy b x b m q lq lqxgy m qnb ln m b b wl s b bwq sx l l x g qxng bwq g f l mxf f wbXng xf b l cx lg fxs q x l f f bwq f bwl l fkhglngfxylngL flgL flgfdqn b f f fXng wq xnfclq qg xng fxlgF q l liy I f x y fnb f y fI kn fm y f n bWxb f b w l l q f l qf l y q kn fm n q b b w l b b w q g x y n l b w q w f l m l b q l n b w q S f n f f s x n f f f q b w+<file text ciphertext2.txt>​ 
 +Bwq kRnzlOs ​op wqxfqn ​cryy vq yrkq bqn frhZrng cwo book bwqrh yxsdg Xnl cQnb oab bo sqqb BwQ vhrlqzhoOsPrfq op bWqS cqhq PooyrGw xnL pRfq cqhq crGqPoh Bwq poOyrgw boOk bwqrH yxSdG xnl boOk No ORy crBW bwqs. VAb bwq crGq bOok ory Rn fqggQYg Crbw bwqrh YxsdgVab bwq vhRlqzhoOs CXg yxbqxNl bwqi xyy gyasVqhql xnl gyqDbXnl xb srLnrzWb Bwqhq cxg MHi sxlqVqwoyL, bwq vhRlqZhoOs mOsqbwzo iQ oAB bo sqqb WRs. Bwqn xYy bwogq frhzRng xhogq Xnl bhrssql bwqrh yxsDgXnl Bwq pOoYrgw gxrl anbo bwq CRgqZrfq ag op ioah orypOH oah yxsdg Xhq zornz oabVab bwq crgq xngcqHQl BwqsGxiRnzNxiyqgb bwqhq vq nob qnoazw poh ag Xnl ioAZo iq hxbWqh bo bWQs bwxB gqyyXnl vAi pOH ioahgQyfQgXnl CwrYq bWqi cqnB bO vai, bwq vhrLqzhoos mXsqxnl bwqI bwxB cQhq hqxli cqnb Rn crbw wrs bo bwQ sxhhRxzqxnl Bwq looh Cxg gwaBXnl XPbqhcxhl mxsq xygO bwq obwqh frhZrnggXirnzYOhlYohlodqN bO aGXnl wq xNgcqhql Xnl gxrlFqhryi R gXI anbo ioaR knoc Ioa nobCxbmw bwqHQpohqpoh iq knoc nQRbwqh bwq lxI noh bwq Woah cwqhqrn bwq GoN op sxn Mosqbw. 
 +</​file>​
  
-Заогмэцъ ​Оъюъгпръ поыоюор ыъгямц ыъэят, фрмроыъ, эзяэ ​гэъмцгтсцфц гтрц, эыдгц рягмоъял пъосцам. Пямь ​из оих ​юыги ​съояялтоы, я пяфь ​— олыоы. Съояялтоы эзягц гтрц гтяъмцгтсцфц, ​ор ор эзягц г грюри тяггя. Мыыоыъ жъ эзягц ​тяггр э гргляях этогмъ гтр гтяъмцгтсцфятс гтрцтиЖеоиж рярыыяги эгъ пои заыоътмяли и гптялиИ э фргыржь оягыягпц фрим: юртжеоиж ​иыём; эыярыибъ рягмоъял ъосВргыя эгъ мъ ыъэы эгыяги и попоягиги гтяъмцгтсцфц гтрц. И съояялтоы пфячяги ныыоят: сяимъ оят тяггя эяджъпр, портил юрт гтяъмцгтсцфц оятци рягслиОр ныыоыъ рмэъжяги ит: оъм, юырюы ор юыгр орцргыягряор си оят, си эятИлжцъ яиимъ ф поряяищит и флпимъ гъюъ. И фргыя ​пои подиг ​флплэямь, поимёг жеоижи мъ, фмр югу жрмрэ, ​эрдги г оит оя юояжсиа ​пиои ыэъоь зямтркоигягьИ помыот ​поимги и ыолицъ ыъэы, ряррояЖрппрыиЖрппрыи, рмфомъ оят! И Ос, рмэъжяяпфячягипмиоор рярроя эят: ​Я ор зояи эяг. Юрыопмэрбмъ жъ, июр ор зояъмъ си ыот, си жяпя, фргыя поимёг Гио ​Жъгрэъжъгфии+<file text ciphertext3.txt>​ 
 +Зяонмэцъ ​СъюъНсръ прЫрюср ыънгмЦ Ыъэят, фрмробъ, эчгэ нэъмцуасцФц нэрц, эбдуц сЯэНмОЪжл шъсцил. ПГМа цч сци юбуц ​съоячлтсб, я пгма ​— тлыоБ. Съоячлтсбъ ​эчгуц нэъМцуасцфЦ нэРц, Ср съ эчгуц н нрЮрх тянуя. Тлыобъ шъ эчГуЦ ​тянур э нрнЛыяи этънмъ нр нэЪмцУасцфятц нЭрцТЦШъсци рпРчыяуЦ энъ рсц чяыоътЯуц Ц лНслуЦЦ э пРусРжа оячЫяунг фоцФ: эРм, шЪсЦи цыщм; эбирыцмъ сяэнмоъжЛ Ътл! Мрьыя энъ мЪ ыъэб ЭнМЯуц Ц прпояЭцуц нэъмцуАсцфЦ нэрц. Ц съоячлтсБъ нфячяуц тлыОбт: ыяхМъ сят тянуя эядъьР, прМртл ​жмр нэъмцуасЦфц сядц ьяНслмСр тлыобъ рмэъжяуц цт: съм, жМРюб съ юбур СъырнмямРжСр сц Сят, сц ЭЯТУлждъ цыцмъ ф порыяДгцТ Ц флпцмъ НъЮъ. Ц фрьЫЯ рсц Прдуц ​прфЛпяма, поцДщу шъСци, ц мъ, фмР юбу ьрмрэ, ​ЭрдуЦ н сцт сЯ ЮояжСбх ​пцОц Ыэъоа чЯмэроцуЯнаЦ ПрмрТ поцдуЦ ц ыольцъ ыъэБьрэрогЬрнпрыцЬрнПрыц, рмфорх сят! Ц Рс, рмэъжягНфячяуцнмцсср ЬрэроД эят: ​Г съ чСяд эян. ЮрыонмэЛХмъ Шъ, Цюр съ чсяъмъ Сц ысг, сц жяняфрьыя Поцыщм Нбс ЖъУРэъжънфцх 
 +</​file>​ 
 + 
 +<​hidden>​ 
 +Latin Alphabet (Used for Romanian & English) 
 +| Original | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 
 +| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | 
 +| Cipher | X | V | M | L | Q | P | Z | W | R | U | K | Y | S | N | O | D | J | H | G | B | A | F | C | E | I | T | 
 + 
 +Cyrillic Alphabet (Used for Russian) 
 +| Оригинал | А | Б | В | Г | Д | Е | Ё | Ж | З | И | Й | К | Л | М | Н | О | П | Р | С | Т | У | Ф | Х | Ц | Ч | Ш | Щ | Ъ | Ы | Ь | Э | Ю | Я | 
 +| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | 
 +| Шифр | Я | Ю | Э | Ь | Ы | Ъ | Щ | Ш | Ч | Ц | Х | Ф | У | Т | С | Р | П | О | Н | М | Л | К | И | З | Ж | Д | Г | В | Б | А | Е | Д | Г | 
 + 
 +Text 1: 
 + 
 +"​Împărăţia cerurilor se va asemăna cu zece fecioare, care luând candelele lor, au ieşit în întâmpinarea mirelui. Cinci însă dintre ele erau fără minte, iar cinci înţelepte. Căci cele fără minte, luând candelele, n-au luat cu sine untdelemn. Iar cele înţelepte au luat untdelemn în vase, odată cu candelele lor. Dar mirele întârziind,​ au aţipit toate şi au adormit. Iar la miezul nopţii s-a făcut strigare: Iată, mirele vine! Ieşiţi întru întâmpinarea lui! Atunci s-au deşteptat toate acele fecioare şi au împodobit candelele lor. Şi cele fără minte au zis către cele înţelepte:​ Daţi-ne din untdelemnul vostru, că se sting candelele noastre. Dar cele înţelepte le-au răspuns, zicând: Nu, ca nu cumva să nu ne ajungă nici nouă şi nici vouă. Mai bine mergeţi la cei ce vând şi cumpăraţi pentru voi. Deci plecând ele ca să cumpere, a venit mirele şi cele ce erau gata au intrat cu el la nuntă şi uşa s-a închis. Iar mai pe urmă, au sosit şi celelalte fecioare, zicând: Doamne, Doamne, deschide-ne nouă. Iar el, răspunzând,​ a zis: Adevărat zic vouă: Nu vă cunosc pe voi. Drept aceea, privegheaţi,​ că nu ştiţi ziua, nici ceasul când vine Fiul Omului."​ 
 + 
 + 
 + 
 +Text 2: 
 + 
 +"The kingdom of heaven will be like ten virgins who took their lamps and went out to meet the bridegroom. Five of them were foolish and five were wise. For the foolish took their lamps and took no oil with them. But the wise took oil in vessels with their lamps. But the bridegroom was late, and they all slumbered and slept. And at midnight there was a cry made, Behold, the bridegroom cometh; go ye out to meet him. Then all those virgins arose and trimmed their lamps. And the foolish said unto the wise, Give us of your oil; for our lamps are going out. But the wise answered them, saying, Nay; lest there be not enough for us and you. Go ye rather to them that sell, and buy for yourselves. And while they went to buy, the bridegroom came, and they that were ready went in with him to the marriage: and the door was shut. And afterward came also the other virgins, saying, Lord, Lord, open to us. And he answered and said, Verily I say unto you, I know you not. Watch therefore, for ye know neither the day nor the hour wherein the Son of man cometh."​ 
 + 
 + 
 + 
 +Text 3: 
 + 
 +"​Царствие Небесное подобно десяти девам, которые, взяв светильники свои, вышли навстречу жениху. Пять из них были неразумны, а пять — мудры. Неразумные взяли ​светильники свои, но не взяли с собой масла. Мудрые же взяли масло в сосудах вместе со светильниками своими. Жених опоздали все они задремали и уснули. И в полночь раздался крик: вотжених идёт; выходите навстречу ему! Тогда все те девы встали и поправили светильники свои. И неразумные сказали мудрым:​ дайте нам масла вашего,​ потому что светильники наши гаснут. Но мудрые отвечали им: нет, чтобы не было недостаточно ни нам, ни вам. Лучше идите к продающим и купите себе. И когда они пошли покупать,​ пришёл жених, и те, кто был ​готов, вошли с ним на брачный пир; и дверь затворилась. И потом пришли и другие девы, говоря: ​Господи, Господи,​ открой нам! И Он, отвечая,​ сказал:​ истинно говорю вам: Я не знаю вас. Бодрствуйте ​же, ибо не знаете ни дня, ни часа, когда придёт Сын Человеческий" 
 + 
 +</​hidden>​ 
 + 
 + 
 +=== Bytes în Python === 
 +Să considerăm exemplele de mai jos: 
 +<code python>​ 
 +text1 = "Ana are mere"​ 
 +text2 = b"Ana are mere"​ 
 +print(type(text1)) ​ # <class '​str'>​ 
 +print(type(text2)) ​ # <class '​bytes'>​ 
 +</​code>​ 
 + 
 +Ambele variabile stochează aceeași informație. Diferența constă în modul cum sunt păstrate datele intern, cele două texte fiind codificate în 2 obiecte de tipuri diferite (string și bytes). În timpul laboratoarelor vom lucra de foarte multe ori cu tipul string, dar unele biblioteci externe pot necesita transformarea datelor din formatul string în formatul bytes.
  
  
-=== Exercițiul #1 - Encoding is nice (2p) ===+=== Exercițiul #1 - Encoding is nice (1p) ===
  
 Decodificați următoarele stringuri: Decodificați următoarele stringuri:
Line 385: Line 427:
 </​code>​ </​code>​
  
-=== Exercițiul #2 - But XOR-ing is cool (2p) ===+=== Exercițiul #2 - But XOR-ing is cool (1p) ===
  
 Găsiți mesajele în clar pentru următoarele ciphertexturi,​ știind că cifrul este operația XOR (ciphertext = plaintext XOR key), iar cheia este "​abcdefghijkl"​. Găsiți mesajele în clar pentru următoarele ciphertexturi,​ știind că cifrul este operația XOR (ciphertext = plaintext XOR key), iar cheia este "​abcdefghijkl"​.
Line 445: Line 487:
 </​code>​ </​code>​
  
-=== Exercițiul #3 - Decriptarea unei litere (2p) ===+=== Exercițiul #3 - Decriptarea unei litere (1p) ===
  
 Adăugați o funcție '​caesar_dec'​ în fișierul '​caesar.py'​ care decriptează o singură literă criptată folosind cifrul lui Cezar. Adăugați o funcție '​caesar_dec'​ în fișierul '​caesar.py'​ care decriptează o singură literă criptată folosind cifrul lui Cezar.
Line 509: Line 551:
 </​note>​ </​note>​
  
-=== Exercițiul #4 - Decriptarea unui string (2p) ===+=== Exercițiul #4 - Decriptarea unui string (1p) ===
  
 Scrieți funcția de decriptare numită '​caesar_dec_string'​. Scrieți funcția de decriptare numită '​caesar_dec_string'​.
Line 543: Line 585:
 </​code>​ </​code>​
  
-=== Exercițiul #5 - Shift Ciphers (2p) ===+=== Exercițiul #5 - Shift Ciphers (1p) ===
  
 Folosind valori implicite, extindeți funcția `caesar_dec_string` pentru a decripta mesaje criptate cu shift cipher, astfel încât să suporte chei arbitrare. Folosind valori implicite, extindeți funcția `caesar_dec_string` pentru a decripta mesaje criptate cu shift cipher, astfel încât să suporte chei arbitrare.
Line 578: Line 620:
   * Ce se întâmplă dacă faceți XOR între un caracter [a-z] cu caracterul ' ' (spațiu)? Verificați de asemenea pentru [A-Z].   * Ce se întâmplă dacă faceți XOR între un caracter [a-z] cu caracterul ' ' (spațiu)? Verificați de asemenea pentru [A-Z].
   * Nu puteți scrie un algoritm perfect care să rezolve problema din prima încercare, cel mai probabil va trebui să ghiciți. De ce?   * Nu puteți scrie un algoritm perfect care să rezolve problema din prima încercare, cel mai probabil va trebui să ghiciți. De ce?
-  * Provocarea este interesantă,​ dar poate deveni muncitorească. Din fericire pentru noi, există o implementare open source care poate fi găsită [[https://​github.com/​cosminacho/​MTP|aici]]. Vedeți mai jos cum poate fi rulat. Acest tool se folosește de observațiile de mai sus pentru a [[https://​github.com/​cosminacho/​MTP/​blob/​master/​manytime/​analysis.py#​L34-L55|recupera câteva litere]] din cheie. Posibil ca nu toate literele deja existente să fie puse corect.+  * Provocarea este interesantă,​ dar poate deveni muncitorească. Din fericire pentru noi, există o implementare open source care poate fi găsită [[https://​github.com/​ACS-IC-labs/​MTP|aici]]. Vedeți mai jos cum poate fi rulat. Acest tool se folosește de observațiile de mai sus pentru a [[https://​github.com/​ACS-IC-labs/​MTP/​blob/​master/​manytime/​analysis.py#​L34-L55|recupera câteva litere]] din cheie. Posibil ca nu toate literele deja existente să fie puse corect.
  
 </​note>​ </​note>​
ic/labs/01.1771921878.txt.gz · Last modified: 2026/02/24 10:31 by marios.choudary
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0