Essayez de créer un code de "décryptage" en Python

J'ai essayé de crypter p101-103 du deuxième volume avec Python. Tous cryptent BONJOUR.

1-1. Cryptage de translocation


Entrée
HELLO

s=input()
n=len(s)
l=[]
for i in range(n):
    l.append(str(bin(ord(s[i])))[2:])

m="".join(l)

odd=m[::2]
even=m[1::2]

num=len(even)

for j in range(num):
    print(even[j],end="")
    print(odd[j],end="")
print(odd[-1])


Sortie
01100010001010011001100011000110111

Commencez par convertir en ASCII. C'est correct avec ord (). Unicode et ASCII ont le même alphabet. Ouais.

Les nombres binaires sont difficiles à gérer, donc Si vous utilisez str () pour créer une chaîne de caractères, vous pouvez récupérer le numéro de chaque chiffre. Avec str (bin (ord (s [i]))) [2:], prenez le premier 0b.

Je me suis demandé comment échanger le premier numéro contre le deuxième numéro, J'ai essayé de le traiter qui semble être le problème d'AtCoder.

Il est divisé en nombres impairs et pairs et est émis en alternance.

Puisque impair a un caractère supplémentaire, seul impair [-1] est affiché à la fin. Si l'entrée est un nombre pair d'alphabets, je dois le changer à nouveau, Pour le moment, cette fois.

1-2. Décodage du type d'inversion

Maintenant, au contraire, essayez de renvoyer 01100010001010011001100011000110111 à HELLO.


Entrée
01100010001010011001100011000110111

s=input()
even=s[:-2:2]
odd=s[1::2]

l=[]
n=len(even)
for i in range(n):
    l.append(odd[i])
    l.append(even[i])
l.append(s[-1])

m="".join(l)

num=len(l)//7

for j in range(num):
    print(chr(int(m[7*j:7*(j+1)],2)),end="")

C'est fondamentalement l'opposé du cryptage, donc c'était toujours facile.

Je savais que int ('nombre en notation binaire', 2) était suffisant pour convertir un nombre binaire en un nombre décimal, donc je pouvais l'écrire simplement. Convertir les nombres et les chaînes binaires, octaux et hexadécimaux entre eux avec Python

2-1. Cryptage de translittération

Commencez par convertir le DAVID en code ASCII. 10001001000001101011010010011000100 C'est la clé.

Les règles de cryptage sont -Si chaque élément du texte brut et la clé sont identiques, le texte chiffré sera 0. -Si chaque élément du texte brut et la clé sont différents, le texte chiffré sera 1. C'est une somme logique exclusive (XOR).


Entrée
HELLO DAVID

s=input()
key=input()

n=len(s)

#Conversion ASCII
l_s=[]
l_k=[]

for i in range(n):
    l_s.append(str(bin(ord(s[i])))[2:])
    l_k.append(str(bin(ord(key[i])))[2:])
    
a_s="".join(l_s)
a_k="".join(l_k)

num=len(a_s)
cipher=[]

for j in range(num):
    if a_s[j]==a_k[j]:
        cipher.append("0")
    else:
        cipher.append("1")

print(*cipher,sep="")


Sortie
00011000000100001101000001010001011

2-2. Décodage du type d'inversion

Maintenant, inversement, déplacez 00011000000100001101000001010001011 vers BONJOUR à l'aide de la clé DAVID. Si le code et les éléments clés sont identiques, le texte brut sera 0, et s'ils sont différents, il sera 1. C'est la même chose que lors du cryptage.


Entrée
00011000000100001101000001010001011 DAVID

s=input()
key=input()

n=len(key)

#Convertir la clé en ASCII
l_k=[]

for i in range(n):
    l_k.append(str(bin(ord(key[i])))[2:])
    
k="".join(l_k)

num=len(s)
l_p=[]
for j in range(num):
    if s[j]==k[j]:
        l_p.append("0")
    else:
        l_p.append("1")

p="".join(l_p)

n_p=len(p)//7

for l in range(n_p):
    print(chr(int(p[7*l:7*(l+1)],2)),end="")


Sortie
HELLO

Recommended Posts

Essayez de créer un code de "décryptage" en Python
Essayez de créer un groupe de dièdre avec Python
Faisons un outil de veille de commande avec python
Essayez de dessiner une courbe de vie avec python
Je veux faire un jeu avec Python
Faites une loterie avec Python
Essayez de créer un logiciel de capture aussi précis que possible avec python (2)
Essayez de créer un module Python en langage C
Faisons une interface graphique avec python.
Essayez d'exploiter Facebook avec Python
Créer un système de recommandation avec python
WEB grattage avec python et essayez de créer un nuage de mots à partir des critiques
Faisons un graphe avec python! !!
Expérimentez pour créer un PDF indépendant pour Kindle avec Python
Essayez d'ouvrir une sous-fenêtre avec PyQt5 et Python
Essayez de reproduire un film couleur avec Python
Essayez de vous connecter à qiita avec Python
Faisons un jeu de shiritori avec Python
[Python] Comment rendre une classe itérable
Faisons un noyau jupyter
Fractal pour faire et jouer avec Python
Faisons la voix lentement avec Python
Essayez le scraping HTML avec la bibliothèque Python
Créez un framework Web avec Python! (1)
Essayez de dessiner une carte avec python + cartopy 0.18.0
Créez une application de bureau avec Python avec Electron
Faisons un bot Twitter avec Python!
Créez un framework Web avec Python! (2)
[3ème] J'ai essayé de créer un certain outil de type Authenticator avec python
Essayez de créer un environnement python avec Visual Studio Code et WSL
Comment créer une caméra de surveillance (caméra de sécurité) avec Opencv et Python
Essayez de créer un type de service Web avec un langage de balisage 3D
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé de créer une application de notification de publication à 2 canaux avec Python
[Introduction] Je veux créer un robot Mastodon avec Python! 【Débutants】
Essayez de créer un logiciel de capture aussi précis que possible avec python (1)
J'ai essayé de créer une application todo en utilisant une bouteille avec python
[4th] J'ai essayé de créer un certain outil de type Authenticator avec python
[1er] J'ai essayé de créer un certain outil de type Authenticator avec python
Essayez d'ajouter un mur à votre fichier IFC avec IfcOpenShell python
Essayez de créer votre propre AWS-SDK avec bash
[TCP / IP] Après avoir étudié, essayez de créer un client HTTP avec Python
Comment lire un fichier CSV avec Python 2/3
Essayez de gratter avec Python.
Envoyer un message à LINE avec Python (LINE Notify)
Un mémorandum pour faire WebDAV uniquement avec nginx
Créer un bot Twitter Trend avec heroku + Python
Les débutants en Python ont décidé de créer un bot LINE avec Flask (commentaire approximatif de Flask)
Essayez de résoudre le diagramme homme-machine avec Python
Comment créer un dictionnaire avec une structure hiérarchique.
Essayez de créer foldl et foldr avec Python: lambda. Aussi mesure du temps
Essayez de générer automatiquement des documents Python avec Sphinx
J'ai essayé de faire un signal avec Raspeye 4 (édition Python)
Décidez d'une mission de laboratoire avec Python (fiction)
Étapes pour créer un bot Twitter avec Python
Remplaçons UWSC par Python (5) Faisons un robot
[Python] Essayez de créer vous-même un programme de tri. (Tri sélectif, tri par insertion, tri par bulle)