Dans ce didacticiel, nous explorerons l'une des méthodes de cryptage appelée Caesar Cipher. Cela fait partie de la cryptographie.
Introduction
Dans cette technique, chaque caractère est remplacé par une lettre à une position numérique fixe qui se trouve plus tard ou avant l'alphabet. Par exemple, l'alphabet B est remplacé par deux positions plus bas que D. D deviendrait F et ainsi de suite. Cette méthode doit son nom aux personnages populaires de Jules César, qui l'utilisaient pour communiquer avec les fonctionnaires.
Il existe un algorithme utilisé pour le mettre en œuvre. Comprenons ce qui suit.
Fonctionnalité de l'algorithme de chiffrement de César
Cet algorithme comprend quelques fonctionnalités indiquées ci-dessous.
- Cette technique est assez simple à appliquer le cryptage.
- Chaque texte est remplacé par le nombre fixe de position vers le bas ou vers le haut de l'alphabet.
- Il s'agit d'un type simple de chiffre de substitution.
Une valeur entière est requise pour définir chaque dernier texte déplacé vers le bas. Cette valeur entière est également appelée décalage.
map_non ordonné c++
Nous pouvons représenter ce concept en utilisant l'arithmétique modulaire en transmuant d'abord la lettre en chiffres, selon le schéma, A = 0, B = 1, C = 2, D = 3…….. Z = 25.
La formule mathématique suivante peut être utilisée pour décaler n lettre.
instruction java
Comment décrypter ?
Le décryptage est le même que le cryptage. Nous pouvons créer une fonction qui effectuera un déplacement dans le chemin opposé pour décrypter le texte original. Cependant, nous pouvons utiliser la propriété cyclique du chiffre sous le module.
Chiffre(n) = Décryptage(26-n)
La même fonction peut être utilisée pour le décryptage. Au lieu de cela, nous modifierons la valeur du décalage de telle sorte que shifts = 26 - changement.
Comprenons l'exemple suivant -
Exemple -
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))
Sortir:
Plain txt : CEASER CIPHER EXAMPLE Shift pattern : 4 Cipher: HJFXJWsHNUMJWsJCFRUQJ
Le code ci-dessus a traversé le caractère à un moment donné. Il transférait chaque caractère selon la règle en fonction de la procédure de cryptage et de décryptage du texte.
doubler en chaîne java
Nous avons défini quelques ensembles spécifiques de positions qui ont généré un texte chiffré.
Violation de l'algorithme de chiffrement de César
Nous pouvons pirater le texte chiffré de différentes manières. L'une des façons est Technique de force brute, ce qui implique d'essayer toutes les clés de décryptage possibles. Cette technique n’est pas si difficile et ne demande pas beaucoup d’efforts.
Comprenons l'exemple suivant.
Exemple -
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:>
Chiffre de transposition
L'algorithme de chiffrement par transposition est une technique dans laquelle l'ordre alphabétique dans le texte brut est réorganisé pour former un texte chiffré. Cet algorithme ne prend pas en charge les alphabets de texte brut réels.
tableau java de chaîne
Comprenons cet algorithme à l'aide d'un exemple.
Exemple -
vérifier la valeur null en java
Nous prendrons l'exemple simple appelé chiffrement de transposition en colonnes où nous écrivons chaque caractère du texte douloureux en horizontal avec une largeur d'alphabet spécifiée. Les textes écrits verticalement sont chiffrés, ce qui crée un texte chiffré complètement différent.
Prenons un texte brut et appliquons la simple technique de transposition en colonnes comme indiqué ci-dessous.
Nous avons placé le texte brut horizontalement et le texte chiffré est créé au format vertical comme : hotnejpt.lao.lvi. Pour déchiffrer cela, le récepteur doit utiliser la même table pour déchiffrer le texte chiffré en texte brut.
Code-
Comprenons l'exemple suivant.
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'))
Explication -
Dans le code ci-dessus, nous avons créé une fonction nommée split_len(), qui a craché le caractère de texte douloureux, placé au format colonne ou ligne.
Le encoder() La méthode a créé le texte chiffré avec une clé spécifiant le nombre de colonnes, et nous avons imprimé chaque texte chiffré en lisant chaque colonne.
Remarque : La technique de transposition est censée constituer une amélioration significative de la sécurité cryptographique. Cryptanalyst a observé que le rechiffrement du texte chiffré en utilisant le même chiffre de transposition présente une meilleure sécurité.
0:>