Es ist keine Übertreibung zu sagen, dass die moderne Informationsgesellschaft durch kryptografische Technologie unterstützt wird. Trotzdem profitieren wir davon, ohne uns der Kryptographie besonders bewusst zu sein. Darüber hinaus gibt es die Kryptographie schon seit etwa 100 v. Chr. Darüber hinaus versucht die moderne Kryptographie, eine hohe Sicherheit zu gewährleisten, indem sie die fortschrittliche Mathematik voll ausnutzt. Letztendlich wird sie von der Blockchain-Technologie abgeleitet.
Was ist die Länge dieser Geschichte und die Breite der Verteidigung! !!
Ich bin mir also des Emos der Kryptographie bewusst und versuche, Krypto in Python zu implementieren und zu besiegen, um Wissen zu pflegen und zu aktualisieren.
Die Kryptographie besteht hauptsächlich aus drei Elementen: ** Schlüsselgenerierung **, ** Verschlüsselung ** und ** Entschlüsselung **.
Insbesondere Schlüssel sind ein sehr wichtiger Faktor in der Kryptographie. Ich denke eher, dass die kryptografische Technologie eine Technologie zur Generierung dieses Schlüssels ist. Dies liegt daran, dass dieser Schlüssel sowohl zur Ver- als auch zur Entschlüsselung verwendet wird und in direktem Zusammenhang mit der Sicherheit steht.
Abhängig davon, wie der Schlüssel behandelt wird, kann er in zwei Typen eingeteilt werden: ** Verschlüsselung mit allgemeinem Schlüssel ** und ** Verschlüsselung mit öffentlichem Schlüssel **.
Bei der allgemeinen Schlüsselverschlüsselung wird sowohl bei der Verschlüsselung als auch bei der Entschlüsselung derselbe Schlüssel verwendet. Dies ist seit der Geburt der Kryptographie eine Weile der Mainstream, hat jedoch den Nachteil einer kostspieligen Schlüsselverwaltung, da die Schlüssel nur von den Parteien ausgetauscht werden dürfen, ohne dass dies Dritten bekannt ist.
Um die Nachteile der Verschlüsselung mit gemeinsamen Schlüsseln zu überwinden, werden durch die Verschlüsselung mit öffentlichen Schlüsseln die Kosten für die Schlüsselverwaltung drastisch gesenkt, indem zwei Arten von öffentlichen Schlüsseln generiert werden, ein privater Schlüssel und ein öffentlicher Schlüssel, und der öffentliche Schlüssel buchstäblich verfügbar gemacht wird. Du kannst es schaffen. Die Verschlüsselung mit öffentlichen Schlüsseln wird häufig verwendet, da sie bei geöffnetem öffentlichen Schlüssel verwendet werden kann und mit dem Informationsaustausch im Internet kompatibel ist. Bei der Verschlüsselung mit öffentlichem Schlüssel müssen der private Schlüssel und der öffentliche Schlüssel eine Korrespondenzbeziehung wie eine Tally haben, und gleichzeitig darf der private Schlüssel nicht aus dem öffentlichen Schlüssel abgeleitet werden. Daher werden mathematische Methoden wie die Primfaktorisierung großer Zahlen und diskrete logarithmische Probleme verwendet.
Die Kryptographie änderte sich in der ersten Hälfte des 20. Jahrhunderts. Bis dahin hieß es klassischer Code, und das Brechen des Codes war hauptsächlich Aufgabe der Linguisten. Dies liegt daran, dass ich beim Spielen mit den Zeichen Codes erstellt und entschlüsselt habe, z. B. das Alphabet um einige Zeichen verschoben und die zuvor erstellte Korrespondenztabelle verwendet habe.
Während des Zweiten Weltkriegs wurde jedoch der von der deutschen Armee entwickelte Code-Krieg zwischen Enigma und dem von dem britischen Informationswissenschaftler Turing geleiteten Code-Breaking-Team zu einem der Auslöser, und die Code-Technologie wurde allmählich zum Werk von Mathematikern und Informatikern. Es wurde.
Darüber hinaus wird die Kryptografie ständig weiterentwickelt und entschlüsselt. Tatsächlich verbarg die britische Armee, die das Rätsel entschlüsselt hatte, die Tatsache, dass es etwa 20 Jahre lang entschlüsselt werden konnte. Dies liegt daran, dass Sie das Risiko eingehen, stärkere Chiffren zu entwickeln, wenn Sie ankündigen, dass Sie es geknackt haben.
Dies ist nur eine Sichtweise, aber aufgrund dieses Hintergrunds denke ich, dass es relativ einfach ist, Kryptographie zu verstehen, wenn man von klassischer Kryptographie zu moderner Kryptographie lernt. Es wird dringend empfohlen, anhand der Genealogie der Entwicklung der kryptografischen Technologie zu lernen, da Sie die Unterschiede verstehen können, z. B. welche Bereiche verbessert wurden.
Caesar Code soll der älteste Code (?) Der Welt sein. Wie der Name schon sagt, handelt es sich um einen Code, der von Julius Caesar erstellt wurde, der um das 1. Jahrhundert vor Christus aktiv war. Dies dient zum Konvertieren der Zeichen, indem nur 3 Zeichen verschoben werden, wenn die Zeichen in alphabetischer Reihenfolge angeordnet werden. Wenn der verschlüsselte Teil in Python implementiert ist, sieht er wie folgt aus. Der ASCII-Code wird für den Teil verwendet, der die Zeichen verschiebt.
caesar-cipher.py
def enc(text):
result = ""
for i in range(len(text)):
cha = text[i]
if(cha.isupper()):
result += chr((ord(cha) - 62) % 26 + 65)
else:
result += chr((ord(cha) - 94) % 26 + 97)
return print(result)
Wenn es tatsächlich verschlüsselt ist, sieht es so aus.
caesar-cipher.py
enc("Caesar")
#Code: Fdhvdu
Beim Entschlüsseln kann die Umkehrung der Verschlüsselung erfolgen, sodass die Implementierung wie folgt erfolgt.
caesar-cipher.py
def dec(text):
result = ""
for i in range(len(text)):
cha = text[i]
if(cha.isupper()):
result += chr((ord(cha) - 42) % 26 + 65)
else:
result += chr((ord(cha) - 74) % 26 + 97)
return print(result)
Wenn es ausgeführt wird, sieht es so aus.
caesar-cipher.py
dec("Fdhvdu")
#Entschlüsselung: Caesar
Der Schlüssel zum Caesar-Code bestand darin, 3 Zeichen zu verschieben. Wenn es beispielsweise einen Spion gibt und dieser um 3 Zeichen falsch ausgerichtet ist, ist dies das Ende des Volumes. Daher wurde ein Code entwickelt, um den dritten Teil, dh den Schlüsselteil, zu ändern. Das nennt man Shift-Verschlüsselung.
Der Verschlüsselungsteil ist wie folgt. Dieses Mal wird die Anzahl der zu verschiebenden Zeichen als Argument angegeben. Sie können eine Funktion zum Generieren des Schlüssels erstellen, aber ich habe beschlossen, sie als Argument anzugeben, da sie nur den eingegebenen numerischen Wert so zurückgibt, wie er ist.
shift-cipher.py
def enc(plaintext, rot):
if(rot > 25):
rot = rot % 26
result = ""
for i in range(len(plaintext)):
cha = plaintext[i]
if(cha.isupper()):
result += chr((ord(cha) + rot - 65) % 26 + 65)
else:
result += chr((ord(cha) + rot - 97) % 26 + 97)
return print(result)
Die Entschlüsselung ist die Umkehrung der Verschlüsselung.
shift-cipher.py
def dec(encryptedtext, rot):
if(rot > 25):
rot = rot % 26
result = ""
for i in range(len(encryptedtext)):
cha = encryptedtext[i]
if(cha.isupper()):
result += chr((ord(cha) - rot - 39) % 26 + 65)
else:
result += chr((ord(cha) - rot - 71) % 26 + 97)
return print(result)
Ich plane, den klassischen Code von BC in den modernen Code von Python zu implementieren und zu besiegen, der auch als Wartung und Aktualisierung des Wissens dient. Als ich es versuchte, konnte ich die Geschichte der Kryptographie und die Kämpfe der Vorfahren sehen, und es wurde unerwartet lustig.
Unser unmittelbares Ziel ist es, vorerst das wissensfreie System und den geheimen Austausch zu erreichen, die häufig im Blockchain-Bereich auftreten.