Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst]Wie kann ich mcrypt in node-red benutzen?

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst]Wie kann ich mcrypt in node-red benutzen?

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      tp1de last edited by

      Hallo,

      weiss jemand wie ich mcrypt in node-red benutzen kann? (RIJNDAEL_128, MODE_ECB)

      … zum de- und encodieren.

      Grüße

      Thomas

      1 Reply Last reply Reply Quote 0
      • Stabilostick
        Stabilostick last edited by

        Spaß mit Verschlüsselung. PS: geht auch bcrypt? https://github.com/wstam88/node-red-contrib-bcrypt

        7446_c2271830-d71f-425e-95c2-fc01cf695c1b.gif

        1 Reply Last reply Reply Quote 0
        • T
          tp1de last edited by

          Danke für die Info, das ist aber nicht das was ich suche 😞

          Ich erhalte verschlüsselte Daten aus einer http Abfrage - mit rijndael 128 verschlüsselt - Modus ECB.

          Die muss ich entschlüssseln - Werte verändern und wieder verschlüsselt per http versenden.

          Die brcypt node kann das nicht. Oder übersehe ich etwas?

          1 Reply Last reply Reply Quote 0
          • Stabilostick
            Stabilostick last edited by

            Bin bei Node Red absoluter DAU. Sorry. Bcrypt ist gut für Passwörter.

            Hast Du die Daten im Filesystem oder als Stream? Filesystem: Mittels Node Red exec und dort mcrypt als Shell Kommando mit den Parametern als Payload?

            https://linuxconfig.org/how-to-easily-e … nux-system

            Oder über eine JavaScript-Function und dort dann https://github.com/tugrul/node-mcrypt?

            1 Reply Last reply Reply Quote 0
            • T
              tp1de last edited by

              Danke für den Tipp mit dem Filesystem. Habe ich probiert, aber ich bekomme die htttp-Response damit nicht entschlüsselt.

              Muss dann mal schauen, ob ich das noch hinbekomme.

              Ich versuche folgenden PHP-Befehl in node-red umzusetzen:

              $decrypt = ( mcrypt_decrypt(

              MCRYPT_RIJNDAEL_128,

              key_private,

              base64_decode( $decryptData ),

              MCRYPT_MODE_ECB,

              '' )

              1 Reply Last reply Reply Quote 0
              • Stabilostick
                Stabilostick last edited by

                Habe mir zum Test mit

                sudo apt-get install mcrypt
                

                mcrypt auf meinem Raspberry installiert.

                'mcrypt –help' ergibt eine Befehlsübersicht. Dort habe ich dann analog Deinem Beispiel die folgende Befehlszeile erarbeitert:

                mcrypt -d <dateiname_decryptdata> -k <key_private> -m ecb -a rijndael-128</key_private></dateiname_decryptdata>
                

                Mach das mal zu Fuss mit einer Testdatei. Klappt das?

                Beispiel: testfile.nc –wird-zu--> testfile

                1 Reply Last reply Reply Quote 0
                • T
                  tp1de last edited by

                  Danke für Deine Hilfe. Ja so hatte ich das gemacht - bekomme aber Fehlermeldung, dass die Entschlüsselung nicht funktioniert hat.

                  Ich denke, es gibt 2 mögliche Fehlerursachen:

                  Der Key liegt mit als Hex vor (64 Zeichen) diesen muss ich mit hex2bin in 32 Zeichen umwandeln.

                  Da es die Funktion hex2bin in JS nicht gibt, mache ich das so:

                  ! var key = msg.payload;
                  ! var str = '';
                  ! for (var n = 0; n < key.length; n += 2) {
                  ! str += String.fromCharCode(parseInt(key.substr(n, 2), 16));}
                  ! msg.payload = str;
                  ! return msg;

                  Die http-Response liegt im base64-Format vor. Also habe ich mir die node "node-red-node-base64" installiert und mache damit die Umwandlung. (analog base64_decode in PHP).

                  Beides zusammen - Key oder Daten - passt aber scheinbar nicht zusammen. Schade….

                  1 Reply Last reply Reply Quote 0
                  • Stabilostick
                    Stabilostick last edited by

                    Hast Du das, was da rauskommt auch mal auf der Kommandozeile verwendet?

                    1 Reply Last reply Reply Quote 0
                    • T
                      tp1de last edited by

                      ja Kommandozeile habe ich versucht.

                      Ich habe gerade mal mit npm install hex2bin installiert und den Keyfile in hex-Format damit konvertiert.

                      Der sieht anders aus, als der selbstkonvertierte - funktioniert aber auch nicht.

                      Ich vermute nun, dass ggfs. der http-Output in der http-node und in der bas64-node nicht richtig formatiert ist.

                      …. für heute höre ich aber erst mal auf ..

                      Ich wünsche Dir ein schönes Wochenende

                      Grüße

                      Thomas

                      1 Reply Last reply Reply Quote 0
                      • T
                        tp1de last edited by

                        Ich habe herausgefunden wie es geht: 😄

                        Hier die Lösung, wie mcrypt (oder andere module) in node-red eingebunden werden können.Die Schritte:

                        1. installieren von mcrypt:

                        cd /opt/iobroker/node-modules/iobroker.node-red

                        npm install mcrypt

                        2. Anpassen der settings.js unter /opt/iobroker/iobroker-data/node-red

                        Ganz am Ende mcrypt einfügen:

                        ! functionGlobalContext: {
                        ! //
                        ! mcrypt:require("/opt/iobroker/node_modules/iobroker.node-red/node_modules/mcrypt")
                        ! // os:require('os'),
                        ! // bonescript:require('bonescript'),
                        ! // arduino:require('duino')
                        ! }

                        3. In der Function node wo mcrypt verwendet werden soll statt "require" mcrypt mit "global.get" referenzieren:

                        var mcrypt = global.get('mcrypt');

                        Dann kann mcrypt ganz normal verwendet werden. z.B. zum Verschlüsseln:

                        ! var mcrypt = global.get('mcrypt');
                        ! var key = " …hex-wert...";
                        ! var aeskey = new Buffer(key, 'hex');
                        ! var MCrypt = mcrypt.MCrypt;
                        ! var Ecb = new MCrypt('rijndael-128', 'ecb');
                        ! Ecb.open(aeskey);
                        ! var post = Ecb.encrypt(msg.payload).toString('base64');
                        ! msg.payload = post;

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        913
                        Online

                        31.7k
                        Users

                        79.9k
                        Topics

                        1.3m
                        Posts

                        2
                        10
                        1581
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo