2016-11-27 4 views
2

Ich möchte eine binäre Daten in Binär-und dann auch entschlüsseln binär verschlüsseln. Wie kann ich das in Python machen? Ich habe versucht, AES zu verwenden, konnte es aber nicht erfolgreich durchführen.verschlüsseln Sie eine binäre Daten in Binär-und auch entschlüsseln

Key = '00000000’ 
des = DES.new(key', DES.MODE_ECB) 
plain_text = "10101011" 
#encryption 
cipher_text = des.encrypt(plain_text) 
#decryption 
decrypted_pt = des.decrypt(cipher_text) 

Antwort

0

Was Sie möglicherweise suchen, ist der xor Bitwise-Operator in Python. Grundsätzlich nimmt es jedes Paar von Bits in zwei Zahlen und gibt 1 nur dann, wenn eines des Bits 1 ist, andernfalls gibt es 0.

Input = int(raw_input('Encrypt/Decrypt this >>>'), 2) #input must be in bit format 
key = 0b0100110 #'0b' indicates this is in second base 
Encryption = key^Input 
print Encryption 

mit „1101001“ als Eingang wird der Code 79 drucken (welches 1001111)

Wiederholung am selben Prozess wie folgt:

Decryption = key^Encryption 
print Decryption 

105 gedruckt werden, die unsere ursprünglichen Eingangs war (105 = 1101001)

fo r mehr Lesen Sie unter: https://wiki.python.org/moin/BitwiseOperators oder https://www.tutorialspoint.com/python/bitwise_operators_example.htm

0

Ich nehme an, Sie PyCrypto verwenden, so würde ich vorschlagen, einen Blick auf this blog post nehmen, die Beispielcode enthält und führt Sie durch den Prozess der Verschlüsselung/Entschlüsselung Binärdateien (nicht wert den Code hier kopieren).

Sie können auch überprüfen, simple-crypt, die abstrahiert einige der mühsamen Arbeit mit PyCrypto.

1

Sie haben nicht angegeben, aber Ihr Code sieht so aus, als ob Sie den ECB-Modus verwenden. Hier ist ein kurzes Beispiel für Code, den ich für die Cryptopals-Challenge geschrieben habe, leicht modifiziert, um besser zu Ihrem Beispielcode zu passen. Stellen Sie sicher, dass Ihr Schlüssel 16 Byte lang ist. Außerdem muss der Klartext ein Vielfaches von 16 Byte sein. Eine weitere Herausforderung besteht darin, eine Padding-Funktion zu implementieren.

Eine andere Sache zu beachten ist, dass nach der Verschlüsselung Ihrer Daten, die sicherste Art zu speichern, dass in einer Art von Codierung ist, in der Regel Base64 verwendet wird. Wenn Sie dann entschlüsseln, entschlüsseln Sie base64 zuerst die Daten.

from Crypto.Cipher import AES 
import base64 


def ecb_encrypt(message, key): 
    """ Encrypts a message in AES ECB mode with a given key 
    ACCEPTS: Two strings, the plaintext message and the key 
    RETURNS: A bytes string of base64 encoded ciphertext 
    """ 

    aes = AES.new(key, AES.MODE_ECB) 
    return base64.b64encode(aes.encrypt(message)).decode() 


def ecb_decrypt(encrypted, key): 
    """ Decrypts a ciphertext in AES ECB mode with a given key 
    ACCEPTS: Two strings, the base64 encoded ciphertext and the key 
    RETURNS: A bytes string of the plaintext message 
    """ 

    aes = AES.new(key, AES.MODE_ECB) 
    return aes.decrypt(base64.b64decode(encrypted)) 


if __name__ == "__main__": 

    Key = "0000000000000000" 
    plain_text = "1010101110101011" 

    cipher_text = ecb_encrypt(plain_text, Key) 
    decrypted_pt = ecb_decrypt(cipher_text, Key).decode() 

    print("Original message: {}".format(plain_text)) 
    print("Encrypted message: {}".format(cipher_text)) 
    print("Decrypted message: {}".format(decrypted_pt)) 
Verwandte Themen