TransWikia.com

Caracteres raros al decodificar cadena en Base64

Stack Overflow en español Asked by Francisco Manuel Gonzalez Triv on January 14, 2021

Buenas, llevo varios días intentando pasar una cadena en base64 a algo atendible, os explico que he probado para ver que solución puedo darle.

Primero de todo uso PHP, la cadena esta codifica en C# con Convert.Tobase64String()

  1. Paso la cadena "AAECAQcGqga5sgKsuwLTwwKZxwKixwIMS5EDogSRBv8HsgiCrQLSrgL+vAKhwgK8wwLKwwIA"
    por base64_decode()
  2. Me sale un resultado como este "�����������K�������Ү��������"
  3. Pensado es so caracteres ASCII realizo el siguiente procedimiento

    $a = base64_decode($base64);
    $b = array();
    foreach(str_split($a) as $c)
    $b[] = bindec(sprintf("%08b", ord($c)));
    

Sale un array con unos números pero que deberían de corresponder con una id de una lista. Cosa que no lo hacen.

El código en C# no puedo postularlo por motivos de confidencialidad, pero lo que sí puedo decir es que el contenido es un array de Byte.

One Answer

tuve este problema en PHP por alguna razon no borraba esos caracteres , modifique la funcion a la siguiente: suponiendo que tu resultado es el este :

$var = "�����������K�������Ү��������";

y tenemos esta funcion:

function desencriptar($valor_encriptado) {
          $utf8 = array(
            '/[áàâãªä]/u'   =>   'a',
            '/[ÁÀÂÃÄ]/u'    =>   'A',
            '/[ÍÌÎÏ]/u'     =>   'I',
            '/[íìîï]/u'     =>   'i',
            '/[éèêë]/u'     =>   'e',
            '/[ÉÈÊË]/u'     =>   'E',
            '/[óòôõºö]/u'   =>   'o',
            '/[ÓÒÔÕÖ]/u'    =>   'O',
            '/[úùûü]/u'     =>   'u',
            '/[ÚÙÛÜ]/u'     =>   'U',
            '/ç/'           =>   'c',
            '/Ç/'           =>   'C',
            '/ñ/'           =>   'n',
            '/Ñ/'           =>   'N',
            '/–/'           =>   '-', // UTF-8 hyphen to "normal" hyphen
            '/[’‘‹›‚]/u'    =>   ' ', // Literally a single quote
            '/[“”«»„]/u'    =>   ' ', // Double quote
            '/ /'           =>   ' ', // nonbreaking space (equiv. to 0x160)
        '/[^a-zA-Z0-9-+#=/?'s]/' => ''
        );
        return preg_replace(array_keys($utf8), array_values($utf8), $valor_encriptado );     
    }

limpiamos la variable

var_dump(desencriptar($var));

Answered by JackNavaRow on January 14, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP