Bislang habe ich keinen Weg gefunden dies zu ersetzen. Laut php.net könnte openssl_encrypt funktionieren. Ich scheitere jedoch schon daran, dass ich nicht weiß, welche Parameter einzusetzen sind.
Ich würde das erst mal so lassen und erst mal abwarten und Tee trinken. Wenn irgendwann in Zukunft dann mal IP-Symcon PHP 7 nutzt kannst Du das mit libsodium ersetzten.
leider würde dein Vorschlag bedeuten, dass ich meine Bemühungen hinsichtlich der Prüfung der Scripte auf 5.0 Tauglichkeit einstellen müsste, da ich nicht mehr an die Daten meiner Buderus Therme kommen würde :eek:
Da ich logischweise nicht der Einzige bin der mit diesem Problem zu kämpfen hat, habe ich im Netz einige Hinweise gefunden, wobei die schlechte Dokumentierung bemängelt wird.
Eigentlich wollte ich alle meine Skripte und Module auf 5.0 Verträglichkeit testen und hier dokumentieren, was mir dabei so aufgefallen ist. Ich denke mal, dass dein Harmony Modul schon fit ist für 5.0 oder?
nachdem ich gestern viele Stunden damit verbracht habe einen Ersatz für mcrypt_decrypt bzgl. des Auslesescriptes für die Buderus KM200 zu finden, werde ich das Ganze jetzt erst mal beenden.
Mit sodium kann man nichts anfangen da im Moment undokumentiert und man findet auch nichts zu MCRYPT_RIJNDAEL_128.
Daraufhin habe ich aufgrund diverser Beiträge in stackoverflow es mit OpenSSL versucht. Angeblich soll MCRYPT_RIJNDAEL_128 aes_256_ecb entsprechen https://stackoverflow.com/questions/45218465/mcrypt-rijndael-128-to-openssl-aes-128-ecb-conversion. Aber auch das führte in allen möglichen Varianten nicht zum Erfolg zumal an diversen Stellen der Hinweis stand, dass man ecb nicht verwenden soll - warum auch immer :mad:
Letztendlich erhielt ich wie viele andere Nutzer auch als Ergebnis, dass bei decrypt false zurückgegeben wurde.
Damit muss ich den Einsatz der Version 5 wohl erst einmal vergessen und abwarten was da noch so kommt
Ganz so schlimm würde ich das nicht sehen aber z.b. Broadlink oder auch andere Module nutzten mcrypt_decrypt auch müssen also auch umgestellt werden, ich denke da wird man mit sodium schon zu einer Lösung kommen, beschäftigt habe ich mich damit aber noch nicht.
Die encrypt Anweisung wird bei dem KM200 benötigt, um neue Daten zu setzen. Ich persönlich könnte darauf verzichten, da das sehr selten vorkommt und über eine App gemacht werden kann.
Wichtig wäre für Tests mit V 5, dass man die Daten aus der Therme zurückbekommt. In meiner Heizungssteuerung für die Homematic HT und WT nutze ich u. a. die Außentemperatur die von der Therme geliefert wird.
Dies ist der Grund dafür, dass die Nutzer dieses Scriptes Ersatz benötigen.
die Schlüsselerzeugung ist nicht das Problem. Jeder der das Script benutzt hat sich ja einen Schlüssel generiert. Hier geht es darum, dass die Befehle mycryp_decrpyt in PHP 7 nicht mehr vorhanden sind. Mit anderen Worten: du kannst deine Therme nicht mehr auslesen :eek:
ersetzten? Macht den openssl_encrypt im Prinzip das Gleiche? Dann könnte man das ja jetzt schon ersetzten wenn das ein Ersatz ist und dann sowohl in der jetzigen IP-Symcon Version also auch ab IPS 5 weiterhin verwenden.
ja, das passt Ich konnte allerdings nur das Auslesen testen (decrypt), da das Programm für die Schaltzeiten mit zahlreichen Fehlermeldungen crasht mit deprecated, Array to string conversion usw. Da diese Scripte sehr umfangreich sind werde ich davon erst mal die Finger lassen und meine weiteren Scripte auf php 7 Verträglichkeit testen.
Durch den Link bin ich ja auf den Trip gekommen, dass MCRYPT_RIJNDAEL_128 aes_256_ecb entspricht. Nur dann habe ich irgendwelche Formfehler in den Openssl Anweisungen begangen Knapp daneben ist eben auch vorbei
Danke für den Link da muss man ja erst mal drauf kommen. Ich habe damit getestet mir ist aber immer noch unklar wie man was verschlüsselt ganz geht aus dem Link leider nicht so hervor, hat da jemand eine Idee?
Also Entschlüsseln habe ich mal entsprechend dem Link probiert
Habe das jetzt hier erfolgreich umgesetzt. Xiaomi Smart Home Gateway - Seite 16
Allerdings mit Rawdaten.
Keine Ahnung wie wo du bei deinen Daten da was mit base64 noch machst.
Michael