Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Cifrar ID (numérico)

Estas en el tema de Cifrar ID (numérico) en el foro de PHP en Foros del Web. Hola amigos, espero poder explicarme: Tengo un sistema en el que ocupo para realizar cualquier acción un ID... por ejemplo, para modificar el elemento, ocupo ...
  #1 (permalink)  
Antiguo 17/02/2016, 15:29
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 4 meses
Puntos: 20
Cifrar ID (numérico)

Hola amigos, espero poder explicarme:
Tengo un sistema en el que ocupo para realizar cualquier acción un ID...
por ejemplo, para modificar el elemento, ocupo su id y genero la consulta en base a éste...
El detalle es que yo no quiero que se vea el id real, por ejemplo, si tengo un elemento con id 1... que aparezca id = 124032401 (ejemplo)
Como hace Facebook con los id de usuarios
Alguna idea?
Saludos
  #2 (permalink)  
Antiguo 17/02/2016, 15:31
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cifrar ID (numérico)

Cita:
Como hace Facebook con los id de usuarios
¿Y de dónde sacas que Facebook hace eso?

Me gustaría conocer tus fuentes.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 17/02/2016, 15:36
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 4 meses
Puntos: 20
Respuesta: Cifrar ID (numérico)

Hola, gracias por la respuesta..

Me refería a como muestra por ejemplo éste enlace:
www.facebook.com/profile.php?id=100021432432581

sin encambio si yo pongo
www.facebook.com/profile.php?id=1

Me dice que el perfil no existe...
por eso pensé que tal vez procesen los id... sólo es suposición y sólo lo tome como "ejemplo"

Actualmente tengo una función propia que por ejemplo me toma el id = 1 y me retorna 1243241234
El detalle es que cuanto más grande sea el id recibido, el número resultante también se hace más grande
  #4 (permalink)  
Antiguo 17/02/2016, 15:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cifrar ID (numérico)

¿Y por qué querrías complicarte la vida solo por "cifrar" un valor tan simple?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 17/02/2016, 15:43
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 4 meses
Puntos: 20
Respuesta: Cifrar ID (numérico)

Creo que ese es lo de menos, si no tienes alguna idea...
no me hacen falta tus siempre respuestas "sarcásticas"
  #6 (permalink)  
Antiguo 17/02/2016, 15:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cifrar ID (numérico)

Pues puedes usar hasta base_convert(), es bastante trivial lo que preguntas.

Te sugiero consultar en el manual.

Cita:
Creo que ese es lo de menos, si no tienes alguna idea...
no me hacen falta tus siempre respuestas "sarcásticas"
Por cierto, te recuerdo que estás en un foro de discusión, no todo es pide/dame código.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 17/02/2016, 15:52
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 4 meses
Puntos: 20
Respuesta: Cifrar ID (numérico)

A veces las personas pedimos ayuda en el foro porque no hemos encontrado algo que nos pueda servir en el manual...
El detalle de las funciones de cifrado es que no me devuelven sólo números O no me devuelven valores únicos
No todo es manual amigo.... a veces se necesita un poquito de ingenio ;)
Sólo pregunte por si a alguien ya se le había ocurrido alguna forma... No pregunte para que alguien me respondiera "A pues ve el manual dahh :v "
  #8 (permalink)  
Antiguo 17/02/2016, 16:04
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cifrar ID (numérico)

Igual hay muchos generadores de secuencias únicas en PHP, ya sé que no todo es manual: pero hay que saber buscar.

Buscando por php cifrate integer encontré esto:

- http://stackoverflow.com/questions/2...integer-in-php
- http://php.net/manual/en/function.base-convert.php
- http://hashids.org/php/

El último creo que es el mejor.

Antes de abrir un tema procura hacer una buena búsqueda.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 17/02/2016, 16:43
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 4 meses
Puntos: 20
Respuesta: Cifrar ID (numérico)

Estoy probando los enlaces comentados..
2do y 3ero (el mejor para ti) me arrojan letras en el cifrado ( buscar en inglés no quiere decir q sea una buena busqueda)
Estoy adecuando los ejemplos comentados en el primer enlace... ya que no entran en un ciclo..
Como porque ponen solucionado mi tema???
  #10 (permalink)  
Antiguo 17/02/2016, 17:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cifrar ID (numérico)

Si buscas sólo números entonces en el primer enlace está la solución:
Código PHP:
Ver original
  1. function numhash($n) {
  2.   return (((0x0000FFFF & $n) << 16) + ((0xFFFF0000 & $n) >> 16));
  3. }
  4.  
  5. var_dump(numhash(1));
  6. var_dump(numhash(numhash(1)));

Funciona perfecto y se resuelve a si mismo, es decir, usando numhash() "cifras" el valor original, y aplicando la misma función al valor "cifrado" obtienes el valor original.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 17/02/2016, 17:42
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 4 meses
Puntos: 20
Respuesta: Cifrar ID (numérico)

Asi es, ese código es el que estoy probando
Por alguna razón (quizá el cansancio), no me permitia llamar e imprimir la función "directa" dentro de un for..
pero aqui está mi adecuación (por si a alguien le interesa probar y echarme una mano)

Código PHP:
Ver original
  1. $array = array();
  2. for($v=1;$v<=10;$v++){
  3.     $x = numhash($v);
  4.     array_push($array, $x);
  5. }
  6.  
  7. function numhash($n){
  8.         return (((0x0000FFFF & $n) << 16) + ((0xFFFF0000 & $n) >> 16));    
  9. }
  10.  
  11. for($w=0;$w<count($array);$w++){
  12.     echo ($w+1)." = ".$ara[$w].' = '.numhash(numhash($w+1)).'<br>';
  13.         //Como bien comentas, se resuelve a si mismo
  14. }

La salida de éste código me aparece:

Código HTML:
Ver original
  1. 1 = 65536 = 1
  2. 2 = 131072 = 2
  3. 3 = 196608 = 3
  4. 4 = 262144 = 4
  5. 5 = 327680 = 5
  6. 6 = 393216 = 6
  7. 7 = 458752 = 7
  8. 8 = 524288 = 8
  9. 9 = 589824 = 9
  10. 10 = 655360 = 10

En teoría esta perfecto, (te agradezco el link pateketrueke)
Cita:
¿Y por qué querrías complicarte la vida solo por "cifrar" un valor tan simple?
No es que quiera complicarme la vida, porque querría hacer eso? Al menos YO no x.x
Pero... aunque no lo creas es un requerimiento :/..
El sistema cuenta con funciones,rutas(archivos),enlaces ... q van de acuerdo a ese id
es decir, por ejemplo:
www.mipagina.com/producto='idproducto'

Entonces, una ruta "normal" seria
www.mipagina.com/producto=1
www.mipagina.com/producto=2
www.mipagina.com/producto=3

(por mi lo dejó asi xD)
PERO
No debe de aparecer ahí el ID real, sino lo que comentaba, con el algoritmo aparecería:

www.mipagina.com/producto=65536
www.mipagina.com/producto=131072
www.mipagina.com/producto=196608

El detalle de éste algoritmo es que ya sabes que
1 = 65536
2 = 131072
3 = 196608

Etiquetas: cifrar, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:30.