logo

Цезарова шифра у Пајтону

У овом водичу ћемо истражити једну од метода шифровања под називом Цезар шифра. То је део криптографије.

Увод

У овој техници, сваки знак се замењује словом на одређеној фиксној позицији броја, а налази се касније или испред абецеде. На пример - Абецеда Б је замењена са две позиције доле Д. Д би постало Ф и тако даље. Овај метод је добио име по популарним фрикционим ликовима Јулија Цезара, који га је користио за комуникацију са званичницима.

Постоји алгоритам који се користи за његову имплементацију. Хајде да разумемо следеће.

Карактеристике Цезаровог алгоритма шифре

Овај алгоритам се састоји од неколико карактеристика које су дате у наставку.

  • Ова техника је прилично једноставна за примену шифровања.
  • Сваки текст је замењен фиксним бројем позиције доле или горе са абецедом.
  • То је једноставна врста заменске шифре.

За дефинисање сваког другог текста који је померен надоле потребна је целобројна вредност. Ова целобројна вредност је позната и као померање.

јава креирање листе

Овај концепт можемо представити користећи модуларну аритметику тако што ћемо прво слово претворити у бројеве, према шеми, А = 0, Б = 1, Ц = 2, Д = 3…….. З = 25.

ако иначе басх

Следећа математичка формула се може користити за померање н слова.

Како дешифровати?

Дешифровање је исто што и шифровање. Можемо креирати функцију која ће постићи померање на супротној путањи да би дешифровала оригинални текст. Међутим, можемо користити циклично својство шифре испод модула.

Шифра(н) = Дешифровање(26-н)

Иста функција се може користити за дешифровање. Уместо тога, модификоваћемо вредност померања тако да је схифтс = 26 - смена.

Цезарова шифра у Пајтону

Хајде да разумемо следећи пример -

класа против објекта јава

Пример -

 def encypt_func(txt, s): result = '' # transverse the plain txt for i in range(len(txt)): char = txt[i] # encypt_func uppercase characters in plain txt if (char.isupper()): result += chr((ord(char) + s - 64) % 26 + 65) # encypt_func lowercase characters in plain txt else: result += chr((ord(char) + s - 96) % 26 + 97) return result # check the above function txt = 'CEASER CIPHER EXAMPLE' s = 4 print('Plain txt : ' + txt) print('Shift pattern : ' + str(s)) print('Cipher: ' + encypt_func(txt, s)) 

Излаз:

 Plain txt : CEASER CIPHER EXAMPLE Shift pattern : 4 Cipher: HJFXJWsHNUMJWsJCFRUQJ 

Горњи код је прелазио један по један знак. Пренео је сваки знак по правилу у зависности од процедуре шифровања и дешифровања текста.

Дефинисали смо неколико специфичних скупова позиција који су генерисали шифровани текст.

Кршење алгоритма Цезарове шифре

Можемо да хакујемо шифровани текст на различите начине. Један од начина је Бруте Форце техника, што подразумева испробавање сваког могућег кључа за дешифровање. Ова техника није тако тешка и не захтева много труда.

Хајде да разумемо следећи пример.

Пример -

 msg = &apos;rGMTLIVrHIQSGIEWIVGIEWIV&apos; #encrypted msg LETTERS = &apos;ABCDEFGHIJKLMNOPQRSTUVWXYZ&apos; for k in range(len(LETTERS)): transformation = &apos;&apos; for s in msg: if s in LETTERS: n = LETTERS.find(s) n = n - k if n <0: n="n" + len(letters) transformation="transformation" letters[n] else: s print('hacking k #%s: %s' % (k, transformation)) < pre> <p> <strong>Output:</strong> </p> <pre> Hacking k #25: rHNUMJWrIJRTHJFXJWHJFXJW </pre> <h2>Transposition Cipher</h2> <p>Transposition cipher algorithm is a technique where the alphabet order in the plaintext is rearranged to form a cipher text. This algorithm doesn&apos;t support the actual plain text alphabets.</p> <p>Let&apos;s understand this algorithm using an example.</p> <p> <strong>Example -</strong> </p> <p>We will take the simple example called columnar transposition cipher where we write the each character in the pain text in horizontal with specified alphabet width. The vertically written texts are cipher, which create a completely unlike cipher text.</p> <p>Let&apos;s take a plain text, and apply the simple columnar transposition technique as shown below.</p> <img src="//techcodeview.com/img/python-tutorial/89/caesar-cipher-python-2.webp" alt="Caesar Cipher in Python"> <p>We placed the plain text horizontally and the cipher text is created with vertical format as: <strong>hotnejpt.lao.lvi.</strong> To decrypt this, the receiver must use the same table to decrypt the cipher text to plain text.</p> <p> <strong>Code -</strong> </p> <p>Let&apos;s understand the following example.</p> <pre> def split_len(sequence, length): return [sequence[i:i + length] for i in range(0, len(sequence), length)] def encode(k, plaintxt): order = { int(val): n for n, val in enumerate(k) } ciphertext = &apos;&apos; for index in sorted(order.ks()): for part in split_len(plaintxt, len(k)): try:ciphertext += part[order[index]] except IndexError: continue return ciphertext print(encode(&apos;3214&apos;, &apos;HELLO&apos;)) </pre> <p> <strong>Explanation -</strong> </p> <p>In the above code, we have created a function named <strong>split_len(),</strong> which spitted the pain text character, placed in columnar or row format.</p> <p>The <strong>encode()</strong> method created the cipher text with a key specifying the number of columns, and we have printed each cipher text by reading through each column.</p> <h4>Note - The transposition technique is meant to be a significant improvement in crypto security. Cryptanalyst observed that re-encrypting the cipher text using same transposition cipher shows better security.</h4> <hr></0:>

Транспоситион Ципхер

Шифрирани алгоритам транспозиције је техника у којој се редослед алфабета у отвореном тексту преуређује да би се формирао шифровани текст. Овај алгоритам не подржава стварне алфабете обичног текста.

јава типеоф променљиве

Хајде да разумемо овај алгоритам користећи пример.

Пример -

Узећемо једноставан пример који се зове колонска транспозициона шифра где сваки знак у тексту бола пишемо хоризонтално са специфицираном ширином алфабета. Вертикално писани текстови су шифровани, што ствара потпуно другачији шифровани текст.

Узмимо обичан текст и применимо једноставну технику колонарске транспозиције као што је приказано у наставку.

Цезарова шифра у Пајтону

Поставили смо обичан текст хоризонтално, а шифровани текст је креиран у вертикалном формату као: хотнејпт.лао.лви. Да би ово дешифровао, прималац мора да користи исту табелу да дешифрује шифровани текст у обичан текст.

речник Ц#

код -

Хајде да разумемо следећи пример.

 def split_len(sequence, length): return [sequence[i:i + length] for i in range(0, len(sequence), length)] def encode(k, plaintxt): order = { int(val): n for n, val in enumerate(k) } ciphertext = &apos;&apos; for index in sorted(order.ks()): for part in split_len(plaintxt, len(k)): try:ciphertext += part[order[index]] except IndexError: continue return ciphertext print(encode(&apos;3214&apos;, &apos;HELLO&apos;)) 

Објашњење -

У горњем коду смо креирали функцију под називом сплит_лен(), који је испљунуо карактер текста бола, постављен у колони или формат реда.

Тхе кодирај() метод креира шифровани текст са кључем који одређује број колона, а ми смо одштампали сваки шифровани текст читајући сваку колону.

Напомена – Техника транспозиције треба да буде значајно побољшање крипто безбедности. Криптаналитичар је приметио да поновно шифровање шифрованог текста коришћењем исте транспозиционе шифре показује бољу сигурност.