problema con encriptacion

edited mayo 2008 in Principiantes
hola que tal

tengo un problema al tratar de usar un formulario qeu cree mediante standardform y en el cual trato de encriptar el password mediante sha1 pero cuando lo realizo pues efectivamente guarda algo encriptado pero precisamente no es bajo sha1 porque cuando trato de traer el valor bajo la validacion de login no lo hace pero cuando hago un update en la base de datos y meto el mismo valor con sha1 si lo realiza.. entonces yo creo que tengo mal la implementacion en codigo

el codigo que tengo es el siguiente

public function before_insert(){

$this->usuarios->password=sha1("password");

}


agradesco la atencion prestada

Comentarios

  • edited 1:49
    El algoritmo sha1 sólo encripta, no desencripta. Para la validación tienes que encriptar con sha1 el password introducido, y luego comparar la cadena resultante con la que tienes en la BD.
  • edited 1:49
    sip eso es lo que hago yo comparo lo que guarda el formulario con la cadena que genera la base de datos.. me explico.. para proba he metido la misma cadena como password y cuando la guarda guarda un valor encriptado en efecto.. pero cuando le doy update en la base de datos cambia y ahi es cuando sirve bien porque logro hacer el login desde la pagina que tengo implementada

    espero puedan ayudarme con ese problemita que tengo

    gracias!
  • edited 1:49
    No te acabo de entender, pero creo que cuando haces un update, lo que estás haciendo es un sha1() de la cadena ya encriptada que tenías en la bd. La encriptas dos veces. Eso es erróneo, claro.
  • edited 1:49
    creo que es confuso para todos..

    voy a escribirlo por pasos <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->

    1. tengo el standard form e ingreso datos a la base de datos
    le doy adicionar ingreso los campo e insertar

    2. miro en la base de datos y pues para prober siempre he dado la clave 123 pero me genera un valor que no es porque he mirado bien como queda con sha1

    3. pruebo ese valor haber si depronto funciona en mi formualario de ingreso y no

    4. hago un update sobre la base de datos directamente desde mysql y vuelvo y pruebo y si funciona..

    espero haber sido mas especifico ahora
  • edited 1:49
    mejor dicho siempre e ingresado como clave 123 para probar entonces me genera una cadena rara que no corresponde a sha1 entonces sobre la base de datos hago lo siguiente

    update usuarios set password=sha1('123') where nombre='admin'

    y entonces ahi si queda bien
  • edited 1:49
    Vale, ahora te entiendo. Lo que ocurre es que o bien no recoges bien el password con request o, si ese es el código, te falta el this:
    public function before_insert(){
    
    $this-&gt;usuarios-&gt;password=sha1($this-&gt;request(&quot;password&quot;));
    
    }
    

    O bien:
    public function before_insert(){
    
    $this-&gt;usuarios-&gt;password=sha1($this-&gt;password);
    
    }
    

    supongo que es eso...
  • edited 1:49
    hola ya probe las dos pero ninguna me sirvio ahora no encripta nada <!-- s:? --><img src="{SMILIES_PATH}/icon_confused.gif" alt=":?" title="Confused" /><!-- s:? -->

    me gustaria saber si hay una forma generica de hacer esa encriptacion para ver si me puede servir

    gracias
  • edited 1:49
    Un momento, ¿dónde tienes ese código? ¿En qué archivo?

    Si el archivo es usuarios_controller.php:
    public function before_insert(){
    
    $this-&gt;password=sha1($this-&gt;request(&quot;password&quot;));
    
    }
    

    Si estás en otro controlador y quieres acceder al modelo usuarios:
    public function before_insert(){
    
    $this-&gt;Usuarios-&gt;password=sha1($this-&gt;request(&quot;password&quot;));
    
    }
    

    La parte del request, dependiendo de lo que te comenté más arriba.
  • edited 1:49
    mira todo mi codigo y es que con esa linea que tengo puesta es la unica manera que encuentro que me guarde algo pero no es en sha1
    &lt;?php
    			
    	class UsuariosController extends StandardForm {
    	
    
    	///////////////////////////////////
    static public $force = true;   ////  REMOVER LINEA UNA VEZ TERMINADO EL FORM
        ///////////////////////////////////
    		public $scaffold = true;
    		public function before_insert(){
    
    $this-&gt;usuarios-&gt;password =&quot;% sha1($this-&gt;post('fl_password'))&quot;;
    }
    		public function __construct(){
    			$this-&gt;set_type_password(&quot;password&quot;);
    			$this-&gt;ignore(&quot;id&quot;);
    			$this-&gt;show_not_nulls();
    			
    			
    			
    	
    
    	}
    
    
    	
    	}
    	
    ?&gt;
    

    para ver si me podes ayudar porque me tiene loco ese tema y no he podido avanzar
  • edited 1:49
    hola ya me salio!!! fue una bobada muy grande no habia que tomar el campo sino la variable que traia el valor.. sino que como no la sabia por eso no me salia pensaba que era asi solita.. !! por eso no me salia

    muchas gracias proclamo por tu ayuda! me fuiste de mucho apoyo gracias!!

    pst hay forma de dar karma o algo asi? que no se jejejejeje

    gracias!!!
  • jajja que gran ayuda! Yo que apenas empiezo a descubrir truquitos, no hubiera dado con la encriptación!

    Entre los conocedores alguno ha utilizado esto? Es seguro?

    A diferencia de Gmail, Yahoo y muchas otras aplicaciones que utilizan la @ y son fácilmente interceptados por los curiosos sin su conocimiento o consentimiento, el programa gratuito de Swiftcoin, con encriptación de grado militar, se basa en acertijos matemáticos para garantizar que nadie es consciente de lo que estás pensando, leyendo y escribiendo on-line. Swiftcoin le permite cambiar su dirección "De" cada vez que se envía el correo y cada vez que lo reciba. Bienvenido a la Internet profunda, donde Swiftcoin es la moneda del reino. Las comunicaciones y los pagos de realizados a través de Swiftcoin se envían sin metadatos, por lo que es casi imposible identificar el remitente y el receptor. Email SSL y  el cifrado son una buena idea, pero no va a proteger su privacidad si espías tienen una llave de la puerta trasera en el servidor. . Swiftcoin, construida por los antiguos programadores militares, es su mejor aliado en la lucha contra un estado policial Orwelliano.

    Gracias! Cualquier referencia me ayudará.
Sign In or Register to comment.