2017-06-08 6 views
-4

Ich versuche derzeit, den Inhalt von Dateien zu verschleiern oder einfach TXT-Dateien ohne Verwendung von Bibliotheken. Ich weiß, dass das überhaupt nicht sehr sicher sein wird, aber was ich im Grunde will, ist ein Programm, das Sie fragt, mit welchem ​​Passwort es "verschlüsseln" soll, dann fragt es, was der Dateiname ist und dann findet er diese Datei und " verschlüsselt "es. Dann wird ein anderes Programm verwendet, um es zu "entschlüsseln", so dass es nach dem Passwort und dem Dateinamen fragt und es dann "entschlüsselt". Ich interessiere mich nicht für die tatsächliche Sicherheit, also wenn es leicht geöffnet werden kann, ist es in Ordnung, ich brauche es nur, damit es nicht nur öffnet, wenn Sie auf die Datei klicken.Wie verschleiern Dateien ohne externe Bibliotheken?

Darüber hinaus möchte ich nicht, dass es keine Bibliotheken verwenden, also keine pycrypto oder ähnliches.

Ich bin auf 64-Bit-Windows.

Ich bin auch ein kompletter Anfänger in der Welt des Codes und kenne nur grundlegende Dinge wie zum Beispiel Benutzereingaben, Drucksachen, if-Schleifen und While-Schleifen.

Vielen Dank im Voraus!

+0

Ändern Sie die Erweiterung etwas Ihr Betriebssystem nicht erkennt. Wenn Sie darauf klicken, wird es nicht (direkt) geöffnet. Aber das ist überhaupt nicht sicher. – Wombatz

+0

Vielleicht Umbenennung in externe Bibliothek? Alles was du nicht zusätzlich installierst, ist die * Standard-Bibliothek * –

+4

Wiederhole nach mir: ** Ich werde meinen eigenen Krypto nicht rollen! ** Wiederhole, bis du es glaubst. – zwer

Antwort

0

Sie können versuchen, die password als Schlüssel zu verwenden, um es zu verschlüsseln. Kann eine logische Operation auf der Datei auf einer binären Ebene wie or, and sein, oder andere werden in der Lage sein, es sehr einfach zu verschlüsseln - aber es wird nicht sicher sein, wie Sie erwähnt haben.

1

Ich weiß nicht, ob dies in Ihrer Meinung als eine "externe Bibliothek" qualifiziert, aber wenn Sie auf einem Linux-Rechner sind, haben Sie wahrscheinlich den gpg Befehl zur Verfügung. Dies ist ein vernünftiges * sicheres Verschlüsselungsprotokoll, auf das Sie von python aus zugreifen können - oder direkt von der Befehlszeile, wenn Sie nur wollen, dass die Dateien geschützt sind und Sie sich nicht darum kümmern, dass es durch Python erledigt wird.

Alternativ können Sie einen trivialen Mechanismus zusammenstellen, um den Inhalt einer Datei basierend auf einem bekannten Passwort zu verschleiern. Zum Beispiel könnten Sie das Passwort auf die Länge des Dateitexts "dehnen" (multiplizieren Sie die Zeichenfolge mit (1 + (Textlänge/Passwortlänge)) und zippen Sie dann die beiden zusammen. Das gibt Ihnen eine Menge Tupel, die können B. umgerechnet auf ihren Ordinalwert (ord('f') => 102, zum Beispiel) und zusammen xoriert (ord('f')^ord('b') => 4) und wieder in Zeichen umgewandelt (chr (4) => das nicht druckbare '\ x04') Die resultierenden Zeichen sind Ihr Chiffretext zu brechen. All dies ist trivial, natürlich, aber es ist einfach zu implementieren, und Entschlüsselung ist trivial.

* absichtliche Untertreibung :)

0

können Sie verwenden XTEA (Xtended Tiny Encryption Algorithm) durch das Kopieren(xTended Ti ny Verschlüsselungsalgorithmus) Code in Ihr Projekt, es sind nur 28 Zeilen Python. Es wurde cryptanalysis unterzogen und es wurde gezeigt, dass es einigermaßen sicher ist.

import struct 

def crypt(key,data,iv='\00\00\00\00\00\00\00\00',n=32): 
    def keygen(key,iv,n): 
     while True: 
      iv = xtea_encrypt(key,iv,n) 
      for k in iv: 
       yield ord(k) 
    xor = [ chr(x^y) for (x,y) in zip(map(ord,data),keygen(key,iv,n)) ] 
    return "".join(xor) 

def xtea_encrypt(key,block,n=32,endian="!"): 
    v0,v1 = struct.unpack(endian+"2L",block) 
    k = struct.unpack(endian+"4L",key) 
    sum,delta,mask = 0L,0x9e3779b9L,0xffffffffL 
    for round in range(n): 
     v0 = (v0 + (((v1<<4^v1>>5) + v1)^(sum + k[sum & 3]))) & mask 
     sum = (sum + delta) & mask 
     v1 = (v1 + (((v0<<4^v0>>5) + v0)^(sum + k[sum>>11 & 3]))) & mask 
    return struct.pack(endian+"2L",v0,v1) 

def xtea_decrypt(key,block,n=32,endian="!"): 
    v0,v1 = struct.unpack(endian+"2L",block) 
    k = struct.unpack(endian+"4L",key) 
    delta,mask = 0x9e3779b9L,0xffffffffL 
    sum = (delta * n) & mask 
    for round in range(n): 
     v1 = (v1 - (((v0<<4^v0>>5) + v0)^(sum + k[sum>>11 & 3]))) & mask 
     sum = (sum - delta) & mask 
     v0 = (v0 - (((v1<<4^v1>>5) + v1)^(sum + k[sum & 3]))) & mask 
    return struct.pack(endian+"2L",v0,v1) 

Namensnennung, Code aus: Activestate-Code »Rezepte

Verwandte Themen