Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

341
Vistas
Cripta en laravel Descifrar en reaccionar error nativo

Estoy creando una aplicación con reactnative y laravel,

entonces mi código en laravel está creando un código Qr con datos encriptados y enviándolo a mi interfaz (Reactjs),

Cuando intento descifrar en reaccionar nativo usando Crypto js, agrega algunas características que no agregué en mi back-end,

Mostraré todas las funciones y ejemplos,

//Código en laravel crypt mi información QR

 $unix =time(); $unix_hashed = Crypt::encrypt($unix); return QrCode::size(100)->generate($unix_hashed);

// Código en reaccionar nativo con cryptojs para el descifrado

 var key = '6AhFLqwlExB9tn2Twql62EtbFDqBEv+S7tXW3h6a/0o='; let encrypted = atob(data); encrypted = JSON.parse(encrypted); const iv = CryptoJS.enc.Base64.parse(encrypted.iv); const value = encrypted.value; key = CryptoJS.enc.Base64.parse(key); var decrypted = CryptoJS.AES.decrypt(value, key, { iv: iv }); decrypted = decrypted.toString(CryptoJS.enc.Utf8);

// ejemplo de la salida en la consola:

esta es mi salida

pero el problema debería ser así:

yo:1634986874;

el " " & yo & : & ; es extra

Alguien me puede ayudar

Gracias

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Crypt::encrypt() usa AES-256 en modo CBC por defecto, s. aquí

Antes del cifrado, el texto sin formato se serializa llamando a la función de PHP serialize() generando una representación almacenable del valor. Por ejemplo, serialize(1635015182) devuelve i:1635015182; y serialize('Hello world') devuelve s:11: "Hello world"; . En los datos serializados, i denota un número entero, s:11 denota una cadena de 11 caracteres.

Si el descifrado se realiza con Crypt::decrypt() , se llama a unserialize() después del descifrado, que deserializa los datos y restaura el texto sin formato original.

Al descifrar con otra biblioteca, como CryptoJS, la deserialización no se realiza, por lo que se devuelven los textos sin formato serializados. Por lo tanto, la deserialización debe hacerse manualmente aquí.

Afortunadamente, existe la biblioteca locutus que proporciona puertos de funcionalidades de PHP a JavaScript, por lo que unserialize() también se puede ejecutar bajo JavaScript/NodeJS sin mucho esfuerzo:

 var CryptoJS = require('crypto-js'); var atob = require('atob'); var unserialize = require('locutus/php/var/unserialize') // ciphertext from Crypt::encrypt() var data = "eyJpdiI6IkYyaDhxenFJM0FjaW56TW83NkpuNHc9PSIsInZhbHVlIjoiNzhSeUs5em1WblpaRWk2OVBWVURnUT09IiwibWFjIjoiODg1NGFkOTk0MGVjMjIxODAyNzExOTgxYjhiMDM4YjliMmM5NzE5Mjc0YzFmNDVlMWU1MWRkMTQ2N2Q5ODdmNCJ9" var key = '6AhFLqwlExB9tn2Twql62EtbFDqBEv+S7tXW3h6a/0o='; let encrypted = atob(data); encrypted = JSON.parse(encrypted); const iv = CryptoJS.enc.Base64.parse(encrypted.iv); const value = encrypted.value; key = CryptoJS.enc.Base64.parse(key); var decrypted = CryptoJS.AES.decrypt(value, key, { iv: iv }); decrypted = decrypted.toString(CryptoJS.enc.Utf8); // unserialize console.log(decrypted); // i:1635015182; console.log(unserialize(decrypted)); // 1635015182

La llamada unserialize() en la última línea restaura el texto sin formato original.


Tenga en cuenta que encrypted.mac contiene un MAC para verificar la integridad de los datos. Aquí puede encontrar una implementación de PHP para Crypt::encrypt() .

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda