AES Verschlüsselung: php <=> javascript

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

  • AES Verschlüsselung: php <=> javascript

    Hallo Leute,

    ich probiere und suche schon den ganzen tag, komme aber überhaupt nicht weiter. ich rufe mit ajax verschlüsselte daten von einem webserver ab. diese muss ich entschlüsseln um sie weiterverwenden zu können. an dem php-script der die daten liefert können keine veränderungen vorgenommen werden. ich brauche also in js eine harmonierende de- und encrypt-Funktion.

    hier der php-code

    Code:
    class MCrypt
    {
        private $iv = 'fedcba9876543210';
        private $key = '0123456789abcdef';
    
    
        function __construct()
        {
        }
    
        /**
         * @param string $str
         * @param bool $isBinary whether to encrypt as binary or not. Default is: false
         * @return string Encrypted data
         */
        function encrypt($str, $isBinary = false)
        {
            $iv = $this->iv;
            $str = $isBinary ? $str : utf8_decode($str);
    
            $td = mcrypt_module_open('rijndael-128', ' ', 'cbc', $iv);
    
            mcrypt_generic_init($td, $this->key, $iv);
            $encrypted = mcrypt_generic($td, $str);
    
            mcrypt_generic_deinit($td);
            mcrypt_module_close($td);
    
            return $isBinary ? $encrypted : bin2hex($encrypted);
        }
    
        /**
         * @param string $code
         * @param bool $isBinary whether to decrypt as binary or not. Default is: false
         * @return string Decrypted data
         */
        function decrypt($code, $isBinary = false)
        {
            $code = $isBinary ? $code : $this->hex2bin($code);
            $iv = $this->iv;
    
            $td = mcrypt_module_open('rijndael-128', ' ', 'cbc', $iv);
    
            mcrypt_generic_init($td, $this->key, $iv);
            $decrypted = mdecrypt_generic($td, $code);
    
            mcrypt_generic_deinit($td);
            mcrypt_module_close($td);
    
            return $isBinary ? trim($decrypted) : utf8_encode(trim($decrypted));
        }
    
        protected function hex2bin($hexdata)
        {
            $bindata = '';
    
            for ($i = 0; $i < strlen($hexdata); $i += 2) {
                $bindata .= chr(hexdec(substr($hexdata, $i, 2)));
            }
    
            return $bindata;
        }
    
    }
    Code:
    $mcrypt = new MCrypt(); 
    $encrypted =  $mcrypt->encrypt("test"); 
    //result: 9d4f494195e6a16b25546c852450f809
    weder mit cryptojs noch mit jsmcrypt habe ich es in js hinbekommen die daten wieder zu entschlüsseln.

    ich hoffe das jemand von euch auf dem gebiet richtig fit ist und mir unter die arme greifen kann.

    Danke, Danke und nochmal Danke
    Zuletzt geändert von mr_apollon; 07.08.2014, 18:26.

  • #2
    Warum rufst du per Ajax nicht ein PHP-Script auf, dass die verschlüsselten Daten abholt und dekodiert? Mit JavaScript wirst du keinen Zugriff auf das mcrypt-Modul haben.

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar

    Lädt...
    X