Ankündigung

Einklappen
Keine Ankündigung bisher.

Encrypt Sonderzeichen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Encrypt Sonderzeichen

    Hey Leute um einen string zu verschlüsseln und zu entschlüsseln verwende ich:
    PHP-Code:
                class Encryption
                
    {
                    const 
    CIPHER MCRYPT_RIJNDAEL_128;
                    const 
    MODE   MCRYPT_MODE_CBC;

                    private 
    $key;
                    public function 
    __construct($key) {
                        
    $this->key $key;
                    }

                    public function 
    encrypt($plaintext) {
                        
    $ivSize mcrypt_get_iv_size(self::CIPHERself::MODE);
                        
    $iv mcrypt_create_iv($ivSizeMCRYPT_DEV_RANDOM);
                        
    $ciphertext mcrypt_encrypt(self::CIPHER$this->key$plaintextself::MODE$iv);
                        return 
    base64_encode($iv.$ciphertext);
                    }

                    public function 
    decrypt($ciphertext) {
                        
    $ciphertext base64_decode($ciphertext);
                        
    $ivSize mcrypt_get_iv_size(self::CIPHERself::MODE);
                        if (
    strlen($ciphertext) < $ivSize) {
                            throw new 
    Exception('Missing initialization vector');
                        }

                        
    $iv substr($ciphertext0$ivSize);
                        
    $ciphertext substr($ciphertext$ivSize);
                        
    $plaintext mcrypt_decrypt(self::CIPHER$this->key$ciphertextself::MODE$iv);
                        return 
    rtrim($plaintext"\0");
                    }
                } 
    Nun werden jedoch Sonderzeichen also z.B. '€','$',',' etc.. nicht richtig ver/entschlüsselt. Beispiel:
    PHP-Code:
    $key '24-stelliger-key';
    $crypt = new Encryption($key);
    $encrypted_string $crypt->encrypt('$');

    $key 'der-gleiche-24-stellige-key';
    $crypt = new Encryption($key);
    $decrypted_string $crypt->decrypt($encrypted_string);

    echo 
    $decrypted_string;
    // output: %E2%82%AC 
    Kennt da jmd ne gute lösung für das Problem?
    Gruß

  • #2
    Code kopiert, key eingetragen, ergebnis:
    Code:
    D:\Test>php test.php
    $
    ?!

    An UTF8 gedacht?
    [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

    Kommentar


    • #3
      utf-8 ist drinne :/ ok da muss ich echt nochmal schauen woher das problem kommt, danke.

      Kommentar


      • #4
        nebenbei, haste ja ausgespart:
        Zitat von http://php.net/manual/en/function.mcrypt-encrypt.php
        It is better not to use ASCII strings for keys.
        It is recommended to use the mhash functions to create a key from a string.
        könnte man aber handy in classe packen denke ich.

        Kommentar

        Lädt...
        X