I den här handledningen kommer vi att utforska en av krypteringsmetoderna som kallas Caesar Cipher. Det är en del av kryptografi.
Introduktion
I den här tekniken ersätts varje tecken med en bokstav, viss position med fast nummer, den är senare eller före alfabetet. Till exempel - Alfabet B ersätts med två positioner nedåt D. D skulle bli F och så vidare. Denna metod är uppkallad efter populära friktionskaraktärer Julius Caesar, som använde den för att kommunicera med tjänstemän.
Det finns en algoritm som används för att implementera det. Låt oss förstå följande.
Funktion av Caesar Cipher Algorithm
Denna algoritm består av några funktioner som ges nedan.
- Denna teknik är ganska enkel att använda kryptering.
- Varje text ersätts av det fasta antalet positioner nedåt eller uppåt med alfabetet.
- Det är en enkel typ av ersättningschiffer.
Det krävs ett heltalsvärde för att definiera var och en av texten som har flyttats ned. Detta heltalsvärde är också känt som skiftet.
sträng delad java
Vi kan representera detta koncept med modulär aritmetik genom att först omvandla bokstaven till siffror, enligt schemat, A = 0, B = 1, C = 2, D = 3…….. Z = 25.
Följande matematiska formel kan användas för att flytta n bokstav.
Hur dekrypterar man?
Dekrypteringen är densamma som kryptering. Vi kan skapa en funktion som kommer att åstadkomma skiftning i motsatt väg för att dekryptera den ursprungliga texten. Däremot kan vi använda chifferets cykliska egenskap under modulen.
Chiffer(n) = Dechiffrera(26-n)
Samma funktion kan användas för dekryptering. Istället kommer vi att modifiera skiftvärdet så att skift = 26 - skift.
konstruktör i java
Låt oss förstå följande exempel -
Exempel -
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))
Produktion:
arraylist
Plain txt : CEASER CIPHER EXAMPLE Shift pattern : 4 Cipher: HJFXJWsHNUMJWsJCFRUQJ
Ovanstående kod har korsat tecknet åt gången. Den överförde varje tecken enligt regeln beroende på proceduren för kryptering och dekryptering av texten.
Vi har definierat några specifika positioner som genererade en chiffertext.
Brott i Caesar Cipher Algorithm
Vi kan hacka chiffertexten på olika sätt. Ett av sätten är Brute Force Technique, vilket innebär att man försöker alla möjliga dekrypteringsnycklar. Denna teknik är inte så svår och kräver inte mycket ansträngning.
Låt oss förstå följande exempel.
Exempel -
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 Chiffer
Transposition chifferalgoritm är en teknik där alfabetets ordning i klartexten omarrangeras för att bilda en chiffertext. Den här algoritmen stöder inte de faktiska vanliga textalfabeten.
formatera datum till sträng
Låt oss förstå denna algoritm med ett exempel.
Exempel -
Vi tar det enkla exemplet som kallas kolumnär transpositions-chiffer där vi skriver varje tecken i smärttexten horisontellt med angiven alfabetsbredd. De vertikalt skrivna texterna är chiffer, vilket skapar en helt olik chiffertext.
js-ersättning
Låt oss ta en vanlig text och tillämpa den enkla kolumnära transponeringstekniken som visas nedan.
Vi placerade den vanliga texten horisontellt och chiffertexten skapas med vertikalt format som: hotnejpt.lao.lvi. För att dekryptera detta måste mottagaren använda samma tabell för att dekryptera chiffertexten till vanlig text.
Kod -
Låt oss förstå följande exempel.
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'))
Förklaring -
I koden ovan har vi skapat en funktion som heter split_len(), som spottade smärttextkaraktären, placerad i kolumnformat eller radformat.
De koda() metoden skapade chiffertexten med en nyckel som anger antalet kolumner, och vi har skrivit ut varje chiffertext genom att läsa igenom varje kolumn.
Notera - Transpositionstekniken är avsedd att vara en betydande förbättring av kryptosäkerhet. Kryptanalytiker observerade att omkryptering av chiffertexten med samma transponeringskryptering visar bättre säkerhet.
0:>