In C# Ich habe ein byte [24] Byte-Array mit dem Schlüssel für Triple-DES-Verschlüsselung/Entschlüsselung. Alles funktioniert gut in C#.C# Entschlüsselung zu Python PyDes
Meine Frage ist, wie kann ich das gleiche Byte-Array in Python verwenden?
ich das PyDes Paket verwenden und ich bin neu in Python, damit ich nicht wissen, ob es PyDes ist, das nicht das Byte-Array akzeptiert oder es ist ich, es falsch zu machen ...
Mein Python-Code ist unten (Ich habe die Daten im Schlüssel für dieses Beispiel geändert).
from pyDes import *
print ("Example of DES encryption using CBC mode\n")
key = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
arr = bytearray(key)
k = triple_des(key, CBC, pad=None, padmode=PAD_PKCS5)
data = "DES encryption algorithm"
print ("Key : %r" % k.getKey())
print ("Data : %r" % data)
d = k.encrypt(data)
print ("Encrypted: %r" % d)
d = k.decrypt(d)
print ("Decrypted: %r" % d)
print ("")
Der Fehler ist
Traceback (most recent call last):
File "test.py", line 8, in <module>
k = triple_des(key, CBC, pad=None, padmode=PAD_PKCS5)
File "/usr/lib/python2.7/site-packages/pyDes.py", line 710, in __init__
self.setKey(key)
File "/usr/lib/python2.7/site-packages/pyDes.py", line 727, in setKey
self._padding, self._padmode)
File "/usr/lib/python2.7/site-packages/pyDes.py", line 409, in __init__
self.setKey(key)
File "/usr/lib/python2.7/site-packages/pyDes.py", line 414, in setKey
self.__create_sub_keys()
File "/usr/lib/python2.7/site-packages/pyDes.py", line 462, in __create_sub_keys
key = self.__permutate(des.__pc1, self.__String_to_BitList(self.getKey()))
File "/usr/lib/python2.7/site-packages/pyDes.py", line 421, in __String_to_BitList
data = [ord(c) for c in data]
TypeError: ord() expected string of length 1, but int found
aktualisieren. Nach der Installation von Python 3 und dem Setzen meines Schlüssels und IV auf den Byte-Typ, funktioniert die Verschlüsselung. Das Problem ist, es entschlüsselt nicht richtig. Die verschlüsselten Daten in meinem C# -Programm sind: "Hallo Welt. Das ist nur ein Test. Goodbye World."
Es entschlüsselt in meinem Python-Skript als: "\ xc3n) \ xf8J \ xaf \ xab \ x01rld. Dies ist nur ein Test. Auf Wiedersehen Welt."
Was würde die Hälfte davon richtig entschlüsselt bekommen, aber der erste Teil nicht?
Dieser Code funktioniert gut für mich. Welche Ausgabe sehen Sie, wenn Sie versuchen, es auszuführen? –
3DES wirklich, das ist 2016, sollte AES für neue Arbeit verwendet werden. 3DES ist minimal sicher, die 24 Bytes sind nur ein 168-Bit-Schlüssel, aber aufgrund des Meet-in-the-Middle-Angriffs beträgt die effektive Sicherheit nur 112 Bit. – zaph
@zaph Ich stimme zu. Es ist nur, dass dies keine neue Arbeit ist. – Giovanni