[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    309

    decrypt & encrypt (RC4)

    Hab da mal wieder ein Problem

    wir wollen/müssen Daten nach dem RC4 (Ron's Cipher 4) auf der AS400 verschlüssen/entschlüsseln!

    hab auch schon mal Mr. "google" gefragt und dann folgendes Programm gefunden!

    PHP-Code:
         H DFTACTGRP(*NOBNDDIR('QC2LE'option(*SRCSTMT: *NODEBUGIO)

         
    D pstring         s             20A
         D encrypt         s              1A
         D key             s             16A   varying inz
    ('CrypTEDkEy')
         
    D InpString       s             21
         D OutString       s                   Like
    (InpString)

         
    D RC4_Controls    ds
         D   funct_id                     2A
         D   datalen                      5U 0
         D   operation                    1A
         D   reserved                    11A
         D   p_key_ctx                     
    *

         
    D key_ctx         ds
         D   stream                     256A
         D   len                          5U 0
         D   reserved2                    6A
         D cipher          PR                  extproc
    ('_CIPHER')
         
    D  receiver                       *
         
    D  control                      32A
         D  source                         
    *

         
    D p_recv          s               *
         
    D p_src           s               *


         
    C     *Entry        PList
         C                   Parm                    pstring
         C                   Parm                    encrypt

          
    *  The following will store a null-terminating byte
          
    *  at the end of InpString as required by the C API _CIPHER.
         
    C                   Eval      %str(%addr(InpString)  :
         
    C                               %len(%trim(pstring)) + 1) = pstring

          
    *  The following will encrypt or decrypt "InpString" using the RC4
          
    *  algorithm with the secret key "key", and place the result
          
    *  into "OutString"

         
    C                   Eval      key_ctx = *ALLx'00'
         
    C                   Eval      stream  = *ALLx'00'
         
    C                   Eval      reserved2= *ALLx'00'
         
    C                   Eval      %subst(stream:1:%len(key)) = key
         C                   
    Eval      len = %len(key)

         
    C                   Eval      RC4_Controls = *ALLx'00'
         
    C                   Eval      funct_id x'0013'
         
    C                   Eval      datalen  = %size(InpString)

         
    C                   Select
         C                   When      encrypt 
    'E'
         
    C                   Eval      operation x'00'
         
    C                   When      encrypt 'D'
         
    C                   Eval      operation x'01'
         
    C                   EndSl
         C                   
    Eval      reserved = *ALLx'00'
         
    C                   Eval      p_key_ctx = %addr(key_ctx)

         
    C                   Eval      p_recv = %addr(OutString)
         
    C                   Eval      p_src  = %addr(InpString)

         
    C                   CallP     cipherp_recvRC4_Controlsp_src)

         
    C                   Seton                                        LR 
    Dieses Pgm. soll ab V5.2 laufen (wir haben V5.3)

    Umwandeln funkt auch prima, nur wenn ich das Programm aufrufe/debuge, dann bekomme ich bei:
    PHP-Code:
         C                   CallP     cipherp_recvRC4_Controlsp_src
    folgende Fehlermeldung:
    Die angeforderte Funktion ist ungültig oder nicht verfügbar auf der Maschine

    cipher bzw. _cipher soll angeblich ein API sein !!!!

    Hat jemand Erfahrung damit o. kann mir jemand weiterhelfen was ich falsch mache, bzw. wo ich dieses API herbekomme!

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.259
    a) du musst den Kryptografie-Support installieren
    b) es gibt dann CMD's und einfache API's:
    http://publib.boulder.ibm.com/infoce...s/catcrypt.htm
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Dec 2002
    Beiträge
    301
    CIPHER ist eine MI Instruktion, auf die in ILE Programmen über den MI Build-In _CIPHER zugegriffen werden kann. Unter V5R1 kann man über CIPHER nach dem DEA, TDEA, RC4 bzw. dem AES Algorithmus Daten verschlüsseln. Ab V5R2 kann man nach Installation der folgenden PTF`s die von Fürchau beschriebenen API`s verwenden.
    PHP-Code:
    SI10060 Common Cryptographic APIs
    SI10105 
    Common Cryptographic API includes
    MF31101 
    Common Cryptographic API fix 
    Ab V5R3 sind diese API`s Bestandteil der Basisinstallation und damit immer verfügbar.

    Voraussetzung für eine Verschlüsselung nach DEA, TDEA, RC4 bzw. AES ist immer die zusätzliche Installation des folgenden Lizenzprogrammes und zwar für alle V5RX Releases.
    PHP-Code:
    5722-AC3 -- Cryptographic Access Provider 128-bit for AS/400 
    Das Programm ist leider ein wenig unsauber programmiert, da man über die MI Instruktion MATMATR ermitteln kann, ob eine Verlüsselung nach RC4 auf der Maschine überhaupt möglich ist. Und wenn nicht möglich, dann hätte man eine Meldung bringen müssen und _CIPHER erst gar nicht aufrufen. Aber was solls.
    Frank Hildebrandt

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    309
    habe heute die:

    5722-AC3 -- Cryptographic Access Provider 128-bit for AS/400
    und
    5722-AC4 -- Cryptographic Access Provider 128-bit for AS/400

    a) reicht es wenn ich nur "5722-AC3" installiere, oder müssen beide installiert werden?

    b) wo liegt eingentlich der Unterschied zwischen beiden?

  5. #5
    Registriert seit
    Dec 2002
    Beiträge
    301
    AC4 ist mir völlig unbekannt. Es läßt sich auch nichts an Informationen finden. Ich würde AC3 installieren. Das wird bestimmt laufen. Steht denn auf der CD wirklich 5722-AC4 drauf?
    Frank Hildebrandt

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    309
    ups sorry, sollte eigentlich so heißen:

    5722-AC3 -- Cryptographic Access Provider 128-bit for AS/400
    und
    5722-CE3 -- Client Encryp 128) for AS/400


    ????

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    309
    ups sorry, sollte eigentlich so heißen:

    5722-AC3 -- Cryptographic Access Provider 128-bit for AS/400
    und
    5722-CE3 -- Client Encryp 128 for AS/400


    ????

  8. #8
    Registriert seit
    Dec 2002
    Beiträge
    301
    Auf der AS/400 installierst Du das AC3. Das CE3 ist für den PC. Das brauchst Du aber nur dann auf einem PC zu installieren, wenn Du auf diesem PC Client Access mit der Funktion 'Operations Console' nutzen willst. Für das, was Du mit Deiner ursprünglichen Frage bewirken willst reicht AC3.
    Frank Hildebrandt

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •