elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  cifrado Java - PHP con resultados diferentes.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: cifrado Java - PHP con resultados diferentes.  (Leído 4,044 veces)
turion

Desconectado Desconectado

Mensajes: 153



Ver Perfil WWW
cifrado Java - PHP con resultados diferentes.
« en: 26 Septiembre 2016, 22:24 pm »

!Buenas noches a todos!

Pues veréis, tengo un problema algo curioso. Estoy desarrollando una web que tiene su base de datos y esta base de datos es alimentada por un programa escrito en Java. Hasta aqui no hay problema.
El problema viene cuando cifro los datos, es decir, si cifro 'hola' en php obtengo una cadena distinta a si lo cifro en java.

El método en ambos lenguaje es AES 256 cbc, o eso creo yo...

La función que cifra en php es la siguiente:
Código:
function encrypt($string) {
$output = false;

$encrypt_method = "AES-256-CBC";

$secret_key = 'abcdefghijklmnño';
$secret_iv = 'adb6ad2f3ae01b30';

// hash
$key = hash('sha256', $secret_key);

// iv - encrypt method AES-256-CBC expects 16 bytes - else you will get a warning
$iv = substr(hash('sha256', $secret_iv), 0, 16);



    $output = openssl_encrypt($string, $encrypt_method, $key, 0, $iv);
    $output = base64_encode($output);

return $output;
}

Y la que cifra en Java es la siguiente:

Código:
public static String encrypt( String value) {
        try {
            String key = "abcdefghijklmnño";
String initVector = "adb6ad2f3ae01b30";
            IvParameterSpec iv = new IvParameterSpec(initVector.getBytes("UTF-8"));
            SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");

            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
            cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);

            byte[] encrypted = cipher.doFinal(value.getBytes());
            System.out.println("encrypted string: "
                    + Base64.encodeBase64String(encrypted));

            return Base64.encodeBase64String(encrypted);
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        return null;
    }


¿Sabéis a que puede ser debido?

Gracias de antemano¡


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: cifrado Java - PHP con resultados diferentes.
« Respuesta #1 en: 27 Septiembre 2016, 01:06 am »

AES en algunos de sus modos retorna diferentes resultados cada cifrado, el fin de esto es evitar el analisis de paquetes estaticos, sin  embargo si está bien implementado no hay ningun conflicto para retornarlo


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
turion

Desconectado Desconectado

Mensajes: 153



Ver Perfil WWW
Re: cifrado Java - PHP con resultados diferentes.
« Respuesta #2 en: 27 Septiembre 2016, 20:20 pm »

AES en algunos de sus modos retorna diferentes resultados cada cifrado, el fin de esto es evitar el analisis de paquetes estaticos, sin  embargo si está bien implementado no hay ningun conflicto para retornarlo

¿Y no se puede cifrar desde distintos idiomas de programación para el intercambio de información? No le veo el sentido...

Creo que mis métodos están bien implementados, ambos tienen los mismos IV y los mismos key. por lo que debería ofercerme 2 cadenas iguales para una misma frase o letra

¿Y no se puede cifrar desde distintos idiomas de programación para el intercambio de información? No le veo el sentido...

Creo que mis métodos están bien implementados, ambos tienen los mismos IV y los mismos key. por lo que debería ofercerme 2 cadenas iguales para una misma frase o letra


Googleando he encontrado lo siguiente:

https://github.com/stevenholder/PHP-Java-AES-Encrypt


Al parecer funciona, con una cifrado menos extensa pero funcionando.

MOD: No hacer doble post.
« Última modificación: 28 Septiembre 2016, 05:37 am por MCKSys Argentina » En línea

6hiii

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: cifrado Java - PHP con resultados diferentes.
« Respuesta #3 en: 9 Octubre 2016, 00:22 am »

Creo que el valor de la Ñ puede ser el responsable de que te de diferente para PHP y Java. No puedo asegurartelo porque no programó en PHP pero casos he visto.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ReadProcessMemory da resultados diferentes w7/XP
Programación C/C++
Nork 4 2,882 Último mensaje 5 Julio 2010, 13:32 pm
por Nork
diferentes maneras de generar un reporte en java?
Java
hack-4-life 0 6,615 Último mensaje 13 Mayo 2011, 18:30 pm
por hack-4-life
crear aplicacion java para resultados de busquedas web
Java
alilo@ 2 2,331 Último mensaje 27 Abril 2013, 17:29 pm
por visualfree
Tratar resultados de diferentes procesos en proceso parent
Programación C/C++
daphataz 0 1,425 Último mensaje 9 Mayo 2016, 17:39 pm
por daphataz
Convertir valor a base 16, resultados diferentes
PHP
:ohk<any> 1 2,916 Último mensaje 27 Marzo 2022, 21:14 pm
por :ohk<any>
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines