Cryptography ft. Python - The One-Time Pad
HTML-код
- Опубликовано: 4 фев 2025
- Write the one-time pad yourself in Python? Sure :)
❤❤❤ Early access to tutorials, polls, live events and downloads ❤❤❤
❤❤❤ www.patreon.co... ❤❤❤
❤❤❤ Not up for Patreon? ❤❤❤
❤❤❤ www.paypal.me/... ❤❤❤
🌍 Website
🌍 the-morpheus.de
¯\_(ツ)_/¯ Join the community ¯\_(ツ)_/¯
** the-morpheus.d... **
** / themorpheustuts **
( ͡° ͜ʖ ͡°) More news? More code?
ℱ / themorpheustutorials
🐦 / themorpheustuts
🐙 github.com/The...
You order from Amazon? Order through me, costs you zero and you help me out
"-(¯`-.-'¯)-" amzn.to/2slBSgH
Video requests?
🎁 docs.google.co...
Questions? Feedback? Write me!
✉ www.patreon.co...
✉ / themorpheustutorials
✉ the-morpheus.d...
or just write a comment :)
Playlist: • Kryptographie
Danke, endlich mal wieder ein Anspruchsvolleres Video
GEIL! Genau für sowas hab ich dich abonniert :D
Ich auch! Marcus
@@florian2119 Ich auch! Marcus und Florian.
Ich habs zwar schon auf discord erwähnt aber ich werde mit K geschrieben 😂
Endlich wieder Python richtig gutes Video
Praktische Sachen = Gut ,da man nicht nur das Thema (Kryptographie) lernt sondern auch Wege um Probleme (wie z.B. "Wie mach ich das jetzt?") zu lösen. Außerdem lernt man auch noch ein wenig von der Programmiersprache.
Danke für das Video, ich versuche alles in Racket nachzumachen :D
Sehr interessant, ich freu mich auf mehr!
Könnte man den key künstlicher verlängern indem man den key hasht und dann den gehashten key und den key wieder hasht etc oder wirds dann sehr unsicher?
Ja, kannst du. Wird auch nicht viel unsicherer. Block-Chiffren (zB AES) heißen deswegen Block-Chiffre weil der Key in einem "Block-System" verlängert wird.
@@DTheHAge A ok, vielen Dank, dann werd ich da mal rein schaun
@DTheHAge sie werden blockchiffren genannt, da die zu verschlüsselnde Nachricht in Blöcken verschlüsselt werden.
AES kann in verschiedenen Modi verwendet werden dazu zählen die blockschifren oder auch Stromchiffren modi.
Für das OTP ist an sich eine Stromchiffre von Nöten, wenn du einen Text mit beliebiger Länge verschlüsseln willst, die Stromchiffre kannst du aber theoretisch natürlich auch in Blöcken erzeugen.
Also ja du kannst es mit Erweiterung des Schlüssels durch hasches machen, ich bin mir aber gerade nicht sicher, ob es nicht dadurch theoretische Angriffsmöglichkeiten auf den Schlüssel gibt.
Ein weiteres Problem ist wahrscheinlich die Laufzeit. Hashwerte sind üblicherweise nicht sehr lang deshalb musst du die Hashfunktion oft auswerten. Andererseits muss die Hashfunktion so sein dass das Verfahren sicher ist.
@@axelneumann8443 Ja, das stimmt natürlich auch
Gerne mehr Kryptographie in Phyton da lernt man (ich zumindest) viel dazu
Haha hast du dich an die Playlist erinnert ;)
Das mit den Schlüssel generieren, währe cool. Ich habe auch schon mal einen Passwort-Generator gemacht.
Nja, ist ja nicht schwer zu implementieren
def generate_key(length: int):
with open("/dev/urandom", "rb") as f:
return f.read(length)
Voll cool! Danke dir, gerne mehr davon :)
Unbedingt mehr davon!
Der XOR-Operator verknüpft ja bitweise, aber warum funktioniert das mit einzelnen Bytes? Muss man das Byteobjekt nicht weiter runterbrechen?
Was für eine Eingabefeld benutzt du :) (Bin Anfänger)
PyCharm
Alle die auch die Schlüsselgeneratoren sehen möchten, diesen Kommentar hochliken...
Keine Sorge, ich mach das eher von den views und likes aufm video abhängig 😅
@@TheMorpheusTutorials soso, also nur auf proviet aus und nicht auf die wünsche der zuschauer ;) nanana
Kann mir jemand sagen in welchem Programm Morpheus den Code schreibt?
PyCharm
Unbedingt mehr praktische Kryptographie
Könntest du vielleicht ein video über wireshark machen? :)
Es gibt ne ganze playlist dazu
Alternativ zu "encode()" sollte auch "ord()" und "chr()" gehen
Erstaunlich wie umständlich das Ganze in python ist.
Normalerweise hat doch python die one liner...
Heute ist es wohl c:
while (*msg && *key) *msg++ ^= *key++;
Geht auch in Python als one-line: return bytes([pb ^ key[i] for i, pb in enumerate(plaintext)])
Alternativ etwas besser lesbar (meiner Meinung nach) :
return bytes(map (lambda x,y: x^y,mag,key))
Ich hätte wenn sowohl die Nachricht als auch der Schlüssel Klartextzeichen sind ne buchstabenweise Addition gemacht.
Quasi ich hätte jetzt gesagt ok ... ich schreib mir das Alphabet in Großbuchstaben einmal auf und nummeriere durch, das Gleiche mit den Kleinbuchstaben und dann noch eventuelle Sonderzeichen.
Und hätte jetzt gesagt ok ... An welcher Stelle in meinem Alphabet ist denn das H von Hallo - ist an 8. An welcher Stelle in meinem Alphabet ist denn das p von p@ssword ... Funfact, das wäre an bei der Aufteilung 42 - wer hätte es gedacht. :-D
8 + 42 sind 50 .... was ist denn an der 50. Stelle ... ist das kleine x. Also: Ciphertext beginnt mit einem x.
Hint: Wenn man am Ende von seinem Alphabet angekommen ist, kann man auch wieder von vorne anfangen, durchzuzählen - es geht da ja weder um den Schlüssel (den man ja nur einmal verwenden soll) noch um den Klartext - es geht um den Output vom Verfahren. :-)
So hätte ich dann jede Zeichenstelle vom Klartext mit der entsprechenden Zeichenstelle vom Schlüssel aufaddiert.
Abgesehen davon dass ich OneTimePad wenn überhaupt nur für Verschlüsselungen von Daten nehmen würde, die meine Netzwerkkarte eh nie verlassen werden ... aber dann bräuchte ich halt doppelt so viel Speicherplatz (auch Festplatten wollen bezahlt werden - auch wenn Speicherplatz günstig ist, gratis sind sie nicht zu haben) - und das macht das ganze Verfahren für mich unattraktiv ...
.