Frage zu pycrypto

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
sveni_lee
User
Beiträge: 92
Registriert: Montag 14. März 2016, 09:50

Ich versuche grad ein neues Plugin für KODI zu schreiben, das meinen jdownloader überwacht...
Es gibt auch einen fertigen Clienten der mit myJdownloader kommunizieren kann.

Mein Problem ist nun das dieser Client den pycrypto verwendet. Im Grunde ist das noch zu lösen. Ich habe auf
meiner Entwicklungsumgebung (Sublime) eine PreBuild version von pyCrypto genommen und dort den ordner mit
Crypto aus der exe-Datei extrahiert und ihn zu meinem Plugin gepackt. Das funktioniert auch wunderbar!
Wenn ich das ganze aber nun in KODI probiere bekomme ich den Dehler, das eine DLL nicht vorhanden ist (_AES).

Code: Alles auswählen

 File "d:\KODI-Krypton\portable_data\addons\plugin.program.myPlugin\Crypto\Cipher\AES.py", line 50, in <module>
 from Crypto.Cipher import _AES
 ImportError: DLL load failed: Das angegebene Modul wurde nicht gefunden.
fogende zwei funktionen benötigen crypto:

Code: Alles auswählen

 def __decrypt(self,secret_token,data):
        """
        Decrypts the data from the server using the provided token
        :param secret_token:
        :param data:
        """
        init_vector = secret_token[:len(secret_token)//2]
        key = secret_token[len(secret_token)//2:]
        decryptor = AES.new(key, AES.MODE_CBC, init_vector)
        decrypted_data = UNPAD(decryptor.decrypt(base64.b64decode(data)))
return decrypted_data

Code: Alles auswählen

def __encrypt(self,secret_token,data):
        """
        Encrypts the data from the server using the provided token
        :param secret_token:
        :param data:
        """
        data = PAD(data.encode('utf-8'))
        init_vector = secret_token[:len(secret_token)//2]
        key = secret_token[len(secret_token)//2:]
        encryptor = AES.new(key, AES.MODE_CBC, init_vector)
        encrypted_data = base64.b64encode(encryptor.encrypt(data))
return encrypted_data.decode('utf-8')
und genau der Funktionsaufruf AES.new(key, AES.MODE_CBC, init_vector) löst den Fehler aus...
könnte man das ganze auch ohne crypto umsetzen, um dem Fehler aus dem Weg zu gehen?
Antworten