I denne opplæringen vil vi utforske en av krypteringsmetodene kalt Caesar Cipher. Det er en del av kryptografi.
Introduksjon
I denne teknikken er hvert tegn erstattet med en bokstav bestemt fast tallposisjon den er senere eller før alfabetet. For eksempel – Alfabet B erstattes med to posisjoner ned D. D vil bli F og så videre. Denne metoden er oppkalt etter populære friksjonskarakterer Julius Caesar, som brukte den til å kommunisere med tjenestemenn.
Det er en algoritme som brukes til å implementere det. La oss forstå følgende.
Funksjon av Caesar Cipher Algorithm
Denne algoritmen består av noen få funksjoner som er gitt nedenfor.
- Denne teknikken er ganske enkel å bruke kryptering.
- Hver tekst erstattes av det faste antallet posisjoner ned eller opp med alfabetet.
- Det er en enkel type erstatningssiffer.
Det kreves en heltallsverdi for å definere hver sistnevnte av teksten som er flyttet ned. Denne heltallsverdien er også kjent som skiftet.
kommando chown
Vi kan representere dette konseptet ved å bruke modulær aritmetikk ved først å omdanne bokstaven til tall, i henhold til skjemaet, A = 0, B = 1, C = 2, D = 3…….. Z = 25.
Følgende matematiske formel kan brukes til å skifte n bokstav.
Hvordan dekryptere?
Dekrypteringen er den samme som kryptering. Vi kan lage en funksjon som vil oppnå skifting i motsatt vei for å dekryptere den opprinnelige teksten. Imidlertid kan vi bruke den sykliske egenskapen til chifferen under modulen.
slå sammen sortering java
Chiffer(n) = Dechiffrer(26-n)
Den samme funksjonen kan brukes til dekryptering. I stedet vil vi endre skiftverdien slik at skift = 26 - skift.
La oss forstå følgende eksempel -
Eksempel -
1 av 1000
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))
Produksjon:
Plain txt : CEASER CIPHER EXAMPLE Shift pattern : 4 Cipher: HJFXJWsHNUMJWsJCFRUQJ
Koden ovenfor har krysset tegnet om gangen. Den overførte hvert tegn i henhold til regelen avhengig av prosedyren for kryptering og dekryptering av teksten.
Vi har definert noen spesifikke sett med posisjoner som genererte en chiffertekst.
Brudd i Caesar Cipher Algorithm
Vi kan hacke chifferteksten på forskjellige måter. En av måtene er Brute Force Technique, som innebærer å prøve alle mulige dekrypteringsnøkler. Denne teknikken er ikke så vanskelig og krever ikke mye innsats.
La oss forstå følgende eksempel.
Eksempel -
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:>
Transponeringssiffer
Transponeringssifferalgoritme er en teknikk der alfabetets rekkefølge i klarteksten omorganiseres for å danne en chiffertekst. Denne algoritmen støtter ikke de faktiske rene tekstalfabetene.
slå sammen java-strengen
La oss forstå denne algoritmen ved å bruke et eksempel.
Eksempel -
Vi vil ta det enkle eksemplet kalt columnar transposition cipher hvor vi skriver hvert tegn i smerteteksten horisontalt med spesifisert alfabetbredde. De vertikalt skrevne tekstene er chiffer, som skaper en helt ulik chiffertekst.
La oss ta en ren tekst og bruke den enkle kolonneformede transponeringsteknikken som vist nedenfor.
js base64 dekode
Vi plasserte ren tekst horisontalt og chifferteksten lages med vertikalt format som: hotnejpt.lao.lvi. For å dekryptere dette, må mottakeren bruke samme tabell for å dekryptere chifferteksten til ren tekst.
Kode -
La oss forstå følgende eksempel.
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'))
Forklaring -
I koden ovenfor har vi laget en funksjon kalt split_len(), som spyttet smertetekstkarakteren, plassert i kolonne- eller radformat.
De kode() metoden opprettet chifferteksten med en nøkkel som spesifiserer antall kolonner, og vi har skrevet ut hver chiffertekst ved å lese gjennom hver kolonne.
Merk - Transponeringsteknikken er ment å være en betydelig forbedring i kryptosikkerhet. Kryptanalytiker observerte at omkryptering av chifferteksten ved å bruke samme transponeringssiffer viser bedre sikkerhet.
0:>