Tässä opetusohjelmassa tutkimme yhtä salausmenetelmistä nimeltä Caesar Cipher. Se on osa kryptografiaa.
Johdanto
Tässä tekniikassa jokainen merkki korvataan kirjaimella tietyllä kiinteällä numerolla, joka on myöhemmin tai ennen aakkosta. Esimerkiksi - Aakkoset B korvataan kahdella asemalla alapuolella D. D:stä tulee F ja niin edelleen. Tämä menetelmä on nimetty suosittujen kitkahahmojen Julius Caesarin mukaan, joka käytti sitä kommunikoidakseen virkamiesten kanssa.
Sen toteuttamiseen käytetään algoritmia. Ymmärrämme seuraavaa.
Caesarin salausalgoritmin ominaisuus
Tämä algoritmi koostuu muutamista ominaisuuksista, jotka on esitetty alla.
- Tämä tekniikka on melko yksinkertainen käyttää salausta.
- Jokainen teksti korvataan kiinteällä numerolla aakkosten kanssa alas tai ylös.
- Se on yksinkertainen korvaava salaustyyppi.
Jokaisen alas siirretyn tekstin jälkimmäisen määrittämiseen tarvitaan kokonaisluku. Tätä kokonaislukuarvoa kutsutaan myös siirroksi.
javascript latausskripti
Tätä käsitettä voidaan esittää modulaarisella aritmetiikalla muuntamalla ensin kirjain numeroiksi kaavion mukaan A = 0, B = 1, C = 2, D = 3…….. Z = 25.
Tietokoneverkot
Seuraavaa matemaattista kaavaa voidaan käyttää n kirjaimen siirtämiseen.
Kuinka purkaa salaus?
Salauksen purku on sama kuin salaus. Voimme luoda funktion, joka suorittaa siirtymisen päinvastaiselle polulle alkuperäisen tekstin salauksen purkamiseksi. Voimme kuitenkin käyttää salauksen syklistä ominaisuutta moduulin alla.
Salaus(n) = salauksen purku (26-n)
Samaa toimintoa voidaan käyttää salauksen purkamiseen. Sen sijaan muokkaamme siirtoarvoa siten, että shifts = 26 - vuoro.
Ymmärretään seuraava esimerkki -
rudyard kipling jos selitys
Esimerkki -
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))
Lähtö:
Plain txt : CEASER CIPHER EXAMPLE Shift pattern : 4 Cipher: HJFXJWsHNUMJWsJCFRUQJ
Yllä oleva koodi on kulkenut merkin läpi kerrallaan. Se siirsi jokaisen merkin säännön mukaisesti riippuen tekstin salaus- ja salauksenpurkumenettelystä.
Olemme määrittäneet muutamia tiettyjä paikkoja, jotka luovat salakirjoituksen.
Caesarin salausalgoritmin rikkominen
Voimme hakkeroida salaustekstiä eri tavoin. Yksi tavoista on Raaka voimatekniikka, joka sisältää jokaisen mahdollisen salauksenpurkuavaimen kokeilun. Tämä tekniikka ei ole niin vaikea eikä vaadi paljon vaivaa.
Ymmärretään seuraava esimerkki.
Esimerkki -
msg = 'rGMTLIVrHIQSGIEWIVGIEWIV' #encrypted msg LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' for k in range(len(LETTERS)): transformation = '' 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't support the actual plain text alphabets.</p> <p>Let'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'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'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 = '' 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('3214', 'HELLO')) </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:>
Transposition salaus
Transpositiolausalgoritmi on tekniikka, jossa aakkosten järjestys selkeässä tekstissä järjestetään uudelleen muodostamaan salakirjoitusteksti. Tämä algoritmi ei tue todellisia pelkkää tekstiä aakkosia.
gimp tallenna jpeg-muodossa
Ymmärretään tämä algoritmi esimerkin avulla.
Esimerkki -
Otamme yksinkertaisen esimerkin, jota kutsutaan saraketransponointisalaukseksi, jossa kirjoitamme jokainen merkki kiputekstiin vaakasuunnassa määritetyllä aakkosten leveydellä. Pystysuoraan kirjoitetut tekstit ovat salattuja, mikä luo täysin erilaisen salakirjoituksen.
Otetaan pelkkä teksti ja sovelletaan yksinkertaista saraketransponointitekniikkaa alla kuvatulla tavalla.
Sijoitimme tavallisen tekstin vaakasuoraan ja salakirjoitettu teksti luodaan pystysuorassa muodossa seuraavasti: hotnejpt.lao.lvi. Tämän salauksen purkamiseksi vastaanottajan on käytettävä samaa taulukkoa salatun tekstin salauksen purkamiseen tavalliseksi tekstiksi.
hakualgoritmeja
Koodi -
Ymmärretään seuraava esimerkki.
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 = '' 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('3214', 'HELLO'))
Selitys -
Yllä olevaan koodiin olemme luoneet funktion nimeltä split_len(), joka sylki kiputekstimerkin sarake- tai rivimuotoon sijoitettuna.
The encode() menetelmä loi salatun tekstin avaimella, joka määrittää sarakkeiden lukumäärän, ja olemme tulostaneet jokaisen salatun tekstin lukemalla jokaisen sarakkeen läpi.
Huomautus - Transponointitekniikan on tarkoitus parantaa kryptoturvallisuutta merkittävästi. Cryptanalyst havaitsi, että salaustekstin uudelleensalaaminen käyttämällä samaa transponointisalausta osoittaa parempaa turvallisuutta.
0:>