Zum Inhalt springen

sYnest

Mitglieder
  • Gesamte Inhalte

    34
  • Benutzer seit

  • Letzter Besuch

Beiträge von sYnest

  1. Beschreib doch bitte mal wie das Tool auf dem deins basieren soll arbeitet und wie deins später damit interagieren soll.

    Diese Plattform solltest du erstellen / bereitstellen oder gibt es die schon ?

    Wenn ja was stellst du dir so vor - bist du vollkommen frei in der Entscheidung ?

    Und was ist mit der Datenbank - wo liegt sie ? bleibt sie da ?

    ______________________________________________

    Also ich persönlich bin Fan von JSP - Java Server Pages. Damit kannste en nettes Webinterface basteln, würde aber einen WAS - Websphere Application Server voraussetzen.

    Das ganze dann noch mit bissel AJAX verfeinern. Hast ja ein Jahr zeit :D

  2. Zu der DLL gibt es nichts, echt nichts. Nur die DLL.

    Der Funktionsname is richtig, du meinst doch den Namen der Funktion in der DLL?

    Ich habe ein Centura Programm hier liegen, das die Funktion genau so verwendet.

    Ich hab mir mal deinen Link von deinem Problem angeschaut.

    Meinst du es liegt an meiner Funktionsdefinition ?

  3. Folgendes Problem:

    Ich habe eine DLL eingebunden, die eine Funktion enthält von der ich weder Dokumentation hab noch weiss ich wie sie arbeitet, jedoch weiss ich, dass sie funktioniert. Sie nennt sich: IpsEncrypt.

    Die DLL is vor zich Jahren mal gekauft worden für Passwortverschlüsselung in gewissen Bereichen bei uns.

    Erklärung der Funktion:

    IpsEncrypt: Passwort verschlüsselung

    Parameter: char*, char *, int

    Der erste Parameter ist das normale Passwort, der Zweite das verschlüsselte (wird also in der Funktion beschrieben) und der int ist die Länge des verschlüsselten Passworts.

    Lange rede kurzer sinn, mein Code:

    JNIEXPORT jstring JNICALL Java_database_Crypt_IpsEncrypt
    (JNIEnv * env, jobject obj, jstring name) {
    HINSTANCE hLib = NULL;
    hLib = LoadLibrary(IPS_ENCRYPT);

    typedef bool (*pIpsEncrypt)( char *, char *, int );
    pIpsEncrypt function = reinterpret_cast< pIpsEncrypt >( GetProcAddress( hLib, "IpsEncrypt" ) );


    if(hLib != NULL){
    if( function != NULL )
    {
    char s1[100];
    char s2[100];
    strcpy(s1, env->GetStringUTFChars(name, false));

    int n1 = 8;

    function(s1, s2, n1);

    printf("Passwort Enc aus C++: ");
    printf(s2);

    return env->NewStringUTF( s2 );
    }
    }

    printf("Null returned");
    return NULL;

    }[/PHP]

    Es entstehen, so Vermutungen, Speicheradressierungsfehler beim Freigeben der beiden Chararrays s1,s2 während dem Schliessen des Programms und dadurch wird der Fehler erzeugt, aber wissen tu ich das nicht.

    Die Fehlermeldung die entsteht (Fehler4.jpg) tritt 2 mal auf einmal vor Aufruf der Funktion und einmal nachher.

    Vielleicht gibt es wen, der eine Idee hat, wie ich diese Fehlermeldungen im warsten Sinne des Wortes ausblenden oder verschwinden lassen kann.

    Durch ignorieren der Fehlermeldungen läuft schließlich mein Programm korrekt weiter und das Passwort wird korrekt verschlüsselt ausgegeben.

    Danke

    post-51116-14430448050808_thumb.jpg

  4. Ich habe jetzt mal die beiden Speicheraddressierungsfehler, die man per Button Ignorieren kann, ignoriert und die JNI einbindung begonnen.

    C++

    JNIEXPORT jstring JNICALL Java_database_Crypt_IpsEncrypt
    (JNIEnv * env, jobject obj, jstring name) {
    HINSTANCE hLib = NULL;
    hLib = LoadLibrary(IPS_ENCRYPT);

    typedef bool (*pIpsEncrypt)( char *, char *, int );
    pIpsEncrypt function = reinterpret_cast< pIpsEncrypt >( GetProcAddress( hLib, "IpsEncrypt" ) );


    if(hLib != NULL){
    if( function != NULL )
    {
    char s1[100];
    char s2[100];
    strcpy(s1, env->GetStringUTFChars(name, false));

    int n1 = 8;

    function(s1, s2, n1);

    printf(s2);

    return env->NewStringUTF( s2 );
    }
    }

    printf("Null returned");
    return NULL;

    }[/PHP]

    Java:

    [PHP]public Crypt() {
    System.loadLibrary("CallAvPass32DLL.dll");
    try {
    System.out.println("Passwort: " + IpsEncrypt("test01"));
    }
    catch (Exception e) {
    e.printStackTrace();
    }
    }

    Das Ergebnis ist verblüffend :D

    Also vorab:

    Der Aufruf funktioniert nun.

    Aber das Ergebnis im Sysout meines Java Debuggers ist folgendes:

    Unhandled exception
    
    Type=Segmentation error vmState=0x00040000
    
    J9Generic_Signal_Number=00000004 ExceptionCode=c0000005 ExceptionAddress=0006FCCE ContextFlags=0001003f
    
    Handler1=7EFB0630 Handler2=7F057A80 InaccessibleAddress=C5857CAE
    
    EDI=CCCCCCCC ESI=CCCCCCCC EAX=C5857CAE EBX=CCCCCCCC
    
    ECX=7C91056D EDX=00000020
    
    EIP=0006FCCE ESP=0006FC94 EBP=4143EB9C
    
    Module=
    
    Module_base_address=00030000 Offset_in_DLL=0003fcce
    
    Target=2_30_20070322_12058_lHdSMR (Windows XP 5.1 build 2600 Service Pack 2)
    
    CPU=x86 (1 logical CPUs) (0x7f666000 RAM)
    
    JVMDUMP006I Processing Dump Event "gpf", detail "" - Please Wait.
    
    JVMDUMP007I JVM Requesting System Dump using 'O:\11\AZUBIS\Jg2007\Haas\Java\ConfirmationOfBooking\core.20080902.102947.3144.dmp'
    
    JVMDUMP010I System Dump written to O:\11\AZUBIS\Jg2007\Haas\Java\ConfirmationOfBooking\core.20080902.102947.3144.dmp
    
    JVMDUMP007I JVM Requesting Snap Dump using 'O:\11\AZUBIS\Jg2007\Haas\Java\ConfirmationOfBooking\Snap0001.20080902.102947.3144.trc'
    
    JVMDUMP010I Snap Dump written to O:\11\AZUBIS\Jg2007\Haas\Java\ConfirmationOfBooking\Snap0001.20080902.102947.3144.trc
    
    JVMDUMP007I JVM Requesting Java Dump using 'O:\11\AZUBIS\Jg2007\Haas\Java\ConfirmationOfBooking\javacore.20080902.102947.3144.txt'
    
    JVMDUMP010I Java Dump written to O:\11\AZUBIS\Jg2007\Haas\Java\ConfirmationOfBooking\javacore.20080902.102947.3144.txt
    
    JVMDUMP013I Processed Dump Event "gpf", detail "".
    
    ZKVNS114

    Man sieht am Ende der Fehler folgt der printf mit dem verschlüsselten Passwort, aber der Sysout im meinem Java Code der eigentlich auch mein verschlüsseltes Passwort ausgeben soll wird nicht mehr ausgeführt.

  5. Leider auch mit deinem Code die beiden Fehler.

    Was mich irritiert:

    Konventionsfehler tritt auf bevor oder während die Funktion aufgerufen wird, dann wird das neue verschlüsselte Passwort ausgegeben.

    Nachdem das geschehen ist kommt im Code ja eig. nichts mehr, aber es tritt trotzdem nochmal ein Konventionsfehler auf.

  6. char s1[100] = "test01";
    
    		char s2[100] = "test01";
    
    
    		int n1		=	8;
    
    
    
    		if(function(s1, s2, n1)) {
    
    			cout << "Verschlüsselung erfolgreich!" << endl;
    
    			cout << s2 << endl;
    
    		}
    
    		else {
    
    			cout << "Verschlüsselung nicht erfolgreich!" << endl;
    
    		}

    !Passwort wurde korrekt verschlüsselt!

    Probleme, die ich jetzt noch habe sind 2 Mal das Auftreten von dem Konventionsfehler. 1 x vorm Aufruf von s2 und 1 x nachdem ich das Verschlüsselte Passwort ausgegeben hab oO

  7. char s1[100];
    
    		s1[0] = 't' ;
    
    		s1[1] = 'e' ;
    
    		s1[2] = 's' ;
    
    		s1[3] = 't' ;
    
    		s1[4] = '0' ;
    
    		s1[5] = '1' ;
    
    		char s2[8];
    
    
    		int n1		=	8;
    
    
    		try {
    
    			if(function(s1, s2, n1)) {
    
    				cout << "Verschlüsselung erfolgreich!" << endl;
    
    			}
    
    			else {
    
    				cout << "Verschlüsselung nicht erfolgreich!" << endl;
    
    			}
    
    		}		
    
    		catch (...) {
    
    			cout << "Catchbereich: " << endl;
    
    			cout << "'";
    
    			for (int i = 0; i < n1; i++) {
    
    				cout << s2[i];
    
    			}
    
    			cout << "'" << endl;
    
    		}

    Hatte ich probiert ;D

    Aber er landet immer im Catchblock

    Die Verschlüsselung startet anscheinend. Im ersten Zeichen meines verschlüsselten Passworts steht eine 6 ;D

    Jedoch weiterhin nur gefüllt mit Blanks (siehe Anhang).

    Meine Umgang mit den Arrays ist hoffentlich richtig so?

    post-51116-14430448050211_thumb.jpg

  8. Neuer Code:

    //typedef bool (*pIpsEncrypt)( string *, string *, int );
    
    	typedef bool (*pIpsEncrypt)( char *, char *, int );
    
    	pIpsEncrypt function = reinterpret_cast< pIpsEncrypt >( GetProcAddress( hLib, "IpsEncrypt" ) );
    
    
    	if( function != NULL )
    
    	{
    
    		cout << "Funktion gefunden\n";
    
    
    		//string s1	=	"";
    
    		//string s2	=	"";
    
    
    		//string * p1 = &s1;
    
    		//string * p2 = &s2;
    
    
    		char s1[100];
    
    		char s2[100];
    
    
    		int n1		=	8;
    
    
    		try {
    
    			if(function(s1, s2, n1)) {
    
    				cout << "Verschlüsselung erfolgreich!" << endl;
    
    			}
    
    			else {
    
    				cout << "Verschlüsselung nicht erfolgreich!" << endl;
    
    			}
    
    			cout << s2; //FUNTIONIERT NICHT
    
    		}		
    
    		catch (...) {
    
    			cout << "Catchbereich!" << endl;
    
    		}
    
    	}
    Was nun passiert ist, dass die Fehlermeldung bezüglich der Convention nicht mehr da ist, was gut ist, jedoch wird nun in der Methode ein Fehler erzeugt, der mich direkt in den Catchbereich katapultiert, ich also keine Ausgabe mehr hab was die Verschlüsselung angeht.
    
    if(function(s1, s2, n1)) { // BRICHT ALSO HIER AB
    
         cout << "Verschlüsselung erfolgreich!" << endl;
    
    }
    
    else {
    
        cout << "Verschlüsselung nicht erfolgreich!" << endl;
    
    }
    
    

  9. Ja stimmt schon, sind aber kleinigkeiten, ich kann die Funktion auch auf True prüfen mit dem selben ergebnis ;D

    An den Quelltext komm ich wie gesagt nicht, aber ich kann versichern, dass die Methode korrekt funktioniert, da ich eine Centura-Anwendung habe, die diese Funktion auch benutzt - einwandfrei.

    Naja, typedef ist etwas unüblich, ich hätte hier mehr an "extern" oder declspec gedacht. Aber egal.

    ...besagt, dass das so funktionieren kann ?

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...