crypto++ zur DES - Verschlüsselung



  • Hallo,

    ich möchte ein Kennwort DES verschlüsseln. Kann ich dazu crypto++ idealerweise benutzen od. gibt es da evtl. eine bessere Alternative?
    (nutze c++ Builder 6)

    Danke!



  • Hallo

    crypto++ ist keine Builder-spezifische Bibliothek. Und ich glaube auch nicht das es eine solche gibt, also verschieb ich dich mal.

    bis bald
    akari



  • Dieser Thread wurde von Moderator/in akari aus dem Forum VCL (C++ Builder) in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hallo,

    Es gibt schon Kryptographie-Komponenten für den BCB6.
    http://www.cityinthesky.co.uk/cryptography.html



  • Danke!
    werde allerdings nicht schlau aus den Beispielen.
    Habe einen Key (z.B. 8 Zeichen lang) und mein Kennwort zum Verschlüsseln.
    Brauche ich dann nur DCP_des->Init und DCP_des->EncryptString(..) oder muss ich auch mit Hash.... was machen?



  • Hier mal ein Beispiel wie das bei mir geht.

    // Mit MD5-Hash initialisieren, in edt_phrase->Text steht mein Schlüssel
    dcpdes_1->InitStr(edt_phrase->Text, __classid(TDCP_md5));
    // Text in edt_Input->Text verschlüsseln und nach edt_output->Text schreiben
    edt_output->Text = dcpdes_1->EncryptString(edt_Input->Text);
    // internen Puffer zurücksetzten
    dcpdes_1->Reset();
    // Hier zur Kontrolle alles wieder entschlüsseln
    dcpdes_1->InitStr(edt_phrase->Text, __classid(TDCP_md5));
    edt_Test->Text = dcpdes_1->DecryptString(edt_output->Text);
    // alle internen Statusvariablen löschen
    dcpdes_1->Burn();
    

    irgendwer sollte diesen Thread mal wieder zum BCB-Forum zurückverschieben. akari war hier etwas voreilig. 😉



  • Danke!
    Mein Schlüssel ist nun aber kein AnsiString sondern sieht so aus:

    unsigned char fixedkey[8] = {32,72,105,10,25,88,78,5};
    

    Habe unter Suchen nichts zur Konvertierung gefunden. Hat jemand eine Idee?
    Es handelt sich beim Schlüssel ja nicht um Buchstaben+Zahlen, sondern um ASCII-Zeichen in Dezimalschreibweise.

    Ich habe nun einmal ein Edit angelegt, in das ich den fixedkey kopiere:

    strcpy( Form1->Key->Text.c_str(), fixedkey );
    


  • strcpy( Form1->Key->Text.c_str(), fixedkey );
    

    Das darfst du nicht tun. c_str() liefert einen const char* auf den internen Speicher von AnsiString und den darfst du auf keinem Fall beschreiben.
    AnsiString hat nun keinen Konstruktor für unsigned char. Du könntest einen std::string als Zwischenspeicher nehmen.



  • Währen folgende Anweisungen bzgl. Zeichenzuweisung/Kopie mit AnsiString und Char* korrekt?

    char* pword = new char[8];
     char* encryptedpword = new char[8+1];
     void des(unsigned char *, unsigned char *);
    
    strcpy( pword, Form1->Passwort->Text.c_str() );
     des(encryptedpword, encryptedpword);
     Form1->verschluesseltesPasswort->Text = encryptedpword;
    

    Danke!


Log in to reply