Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst]Wie kann ich mcrypt in node-red benutzen?

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.0k

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

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

Scheduled Pinned Locked Moved Skripten / Logik
10 Posts 2 Posters 1.8k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    T Offline
    tp1de
    wrote on last edited by
    #1

    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
    0
    • StabilostickS Offline
      StabilostickS Offline
      Stabilostick
      wrote on last edited by
      #2

      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
      0
      • T Offline
        T Offline
        tp1de
        wrote on last edited by
        #3

        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
        0
        • StabilostickS Offline
          StabilostickS Offline
          Stabilostick
          wrote on last edited by
          #4

          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
          0
          • T Offline
            T Offline
            tp1de
            wrote on last edited by
            #5

            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
            0
            • StabilostickS Offline
              StabilostickS Offline
              Stabilostick
              wrote on last edited by
              #6

              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
              0
              • T Offline
                T Offline
                tp1de
                wrote on last edited by
                #7

                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
                0
                • StabilostickS Offline
                  StabilostickS Offline
                  Stabilostick
                  wrote on last edited by
                  #8

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

                  1 Reply Last reply
                  0
                  • T Offline
                    T Offline
                    tp1de
                    wrote on last edited by
                    #9

                    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
                    0
                    • T Offline
                      T Offline
                      tp1de
                      wrote on last edited by
                      #10

                      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
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      519

                      Online

                      32.4k

                      Users

                      81.3k

                      Topics

                      1.3m

                      Posts
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                      ioBroker Community 2014-2025
                      logo
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Recent
                      • Tags
                      • Unread 0
                      • Categories
                      • Unreplied
                      • Popular
                      • GitHub
                      • Docu
                      • Hilfe