Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-01-2011
jehemo jehemo is offline
Miembro
 
Registrado: jul 2006
Posts: 15
Poder: 0
jehemo Va por buen camino
Aqui esta la consulta que realizo para obtener mis datos:

consulta:= 'select u.usuario, (aes_decrypt(u.clave,' + '''' + '1234' + '''' + ')) as psw, u.desc_usuario,' + 'p.agregar_zonas, p.modificar_zonas, p.consultar_zonas,' + 'p.agregar_cobr, p.modificar_cobr, p.consultar_cobr,' + 'p.capturar_entregas, p.modificar_entregas, p.validar_entregas,' + 'p.agregar_usuarios, p.modificar_usuarios, p.consultar_usuarios,' + 'p.consultar_entregas from usuarios as u ' + 'inner join permisos as p on u.usuario = p.usuario ' +'where u.usuario =' + '''' + nombre +'''';

y lo mando a llamar de la siguiente manera:

form1.Edit1.Text:= QModificaUsuario.FieldByName('psw').AsString;

y el valor que me asigna es el valor encriptado
Responder Con Cita
  #2  
Antiguo 31-01-2011
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 19
rgstuamigo Va por buen camino
Arrow

Mira ésta consulta SQL que pongo que te puede orientar:
Código SQL [-]
Select AES_DECRYPT(AES_ENCRYPT('Hola', 'llave'),'llave');
Si te das cuenta en la parte interna estoy cifrando la palabra 'Hola' con una llave de nombre 'llave' luego al resultado de ese cifrado nuevamente los descifro con la misma llave, lo cual debería tener como resultado final la misma palabra 'Hola'
Espero se entienda....
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 31-01-2011 a las 19:46:51.
Responder Con Cita
  #3  
Antiguo 31-01-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Es posible que al compañero le haya pasado lo mismo que a mi cuando probé las funciones Pero es que, viendo el ejemplo del manual de MySQL:

Código:
SELECT @password:='my password';
INSERT INTO t VALUES (1,AES_ENCRYPT('text',@password));
da la impresión que la cadena a encriptar es el segundo parámetro en lugar del primero como bien pone rgstuamigo.

// Saludos
Responder Con Cita
  #4  
Antiguo 31-01-2011
jehemo jehemo is offline
Miembro
 
Registrado: jul 2006
Posts: 15
Poder: 0
jehemo Va por buen camino
Ya intente con la consulta que me das y el resultado que obtengo es el mismo solo mis datos cifrados
Responder Con Cita
  #5  
Antiguo 31-01-2011
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 19
rgstuamigo Va por buen camino
Arrow

La consulta que te he dado es solo un ejemplo aclaratorio e ilustrativo para poder conocer como encriptar y descencriptar valores en MySQL usando la funciones AES_DECRYPT y AES_ENCRYPT respectivamente.
De todas formas te voy a poner un ejemplo basado en que tu tabla "usuarios"en el campo "clave" ya se tiene encriptado y guardado la clave de usuario y queremos obtenerlo desencriptada.
Segun tengo entendido que tu llave con la que has encriptado y guardado la columna 'clave'de tu tabla Usuarios es '1234'
Entonces....
Código SQL [-]
 Select AES_ENCRYPT(u.clave, '1234') from usuarios u;
Debería darte como resultado todas las claves de tu tabla Usuario desencriptada.
Prueba esa consulta y nos avisas como te fué...
PD. Mejor si lo pruebas en con algun programa diferente de Delphi que sirva para hacerles consultas SQL directamente al Servidor MySQL
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #6  
Antiguo 31-01-2011
jehemo jehemo is offline
Miembro
 
Registrado: jul 2006
Posts: 15
Poder: 0
jehemo Va por buen camino
la consulta ya la he probado en mysql directamente y funciona a la perfeccion el problema es q cuando la mando a un edit en delphi de esta manera query1.FieldByName('psw').AsString me muestra el dato encriptado
Responder Con Cita
  #7  
Antiguo 31-01-2011
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 19
rgstuamigo Va por buen camino
Arrow

Si todo lo tienes bien, pues entonces debería funcionarte todo bien humm... me late que algo estás haciendo mal... de todas formas el manual de MySQL dice que:
Cita:
Extraido de el manual MySQL>
Cita:
Si quiere almacenar resultados de una función de encriptación que puede contaner valores arbitrarios de bytes, use una columna BLOB en lugar de CHAR o VARCHAR para evitar problemas potenciales con eliminación de espacios finales que pueden cambiar los valores de datos.
Saludos....
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #8  
Antiguo 31-01-2011
jehemo jehemo is offline
Miembro
 
Registrado: jul 2006
Posts: 15
Poder: 0
jehemo Va por buen camino
aqui esta todo el codidgo de mi formulario haber si me pueden ayudar la parte en rojo es donde tengo el problema
Código Delphi [-]
unit UModificaUsuarios;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, DBCtrls, ADODB;

type
  TFModificaUsuarios = class(TForm)
    QUsuarios: TADOQuery;
    QUsuariosusuario: TStringField;
    BModificar: TButton;
    BConsultar: TButton;
    BSalir: TButton;
    BBorrar: TButton;
    EUsuario: TEdit;
    LUsuarios: TListBox;
    Label1: TLabel;
    QModificaUsuario: TADOQuery;
    procedure FormCreate(Sender: TObject);
    procedure EUsuarioChange(Sender: TObject);
    procedure LUsuariosClick(Sender: TObject);
    procedure BModificarClick(Sender: TObject);
    procedure BConsultarClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BSalirClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FModificaUsuarios: TFModificaUsuarios;

implementation

uses Uusuarios;
{$R *.dfm}

procedure TFModificaUsuarios.BConsultarClick(Sender: TObject);
var
    consulta, nombre, pasword: String;
    fusuarios: TFUsuarios;
    permiso1, permiso2, permiso3, permiso4, permiso5, permiso6, permiso7: integer;
    permiso8, permiso9, permiso10, permiso11, permiso12, permiso13: integer;
begin
    nombre:= lusuarios.Items[lusuarios.ItemIndex];
    consulta:= 'select u.usuario,(aes_decrypt(AES_ENCRYPT(u.clave,';
    consulta:= consulta + '''' + 'TWH664' + '''' + '), ' + '''';
    consulta:= consulta + 'TWH664' + '''' + ')) as psw, u.desc_usuario,';
    consulta:= consulta + 'p.agregar_zonas, p.modificar_zonas, p.consultar_zonas,';
    consulta:= consulta + 'p.agregar_cobr, p.modificar_cobr, p.consultar_cobr,';
    consulta:= consulta + 'p.capturar_entregas, p.modificar_entregas, p.validar_entregas,';
    consulta:= consulta + 'p.agregar_usuarios, p.modificar_usuarios, p.consultar_usuarios,';
    consulta:= consulta + 'p.consultar_entregas from usuarios as u ';
    consulta:= consulta + 'inner join permisos as p on u.usuario = p.usuario ';
    consulta:= consulta +'where u.usuario =' + '''' + nombre +'''';
    qmodificausuario.SQL.Clear;
    QModificaUsuario.SQL.Text:= consulta;
    QmodificaUsuario.Active:= true;
    qmodificausuario.Open;
    showmessage(qmodificausuario.fieldvalues['psw']); //esta linea la utilizo para ver el valor de clave
    pasword:= qmodificausuario.FieldByName('psw').AsString;
    permiso1:= StrtoInt(QModificaUsuario.FieldByName('agregar_zonas').AsString);
    permiso2:= StrtoInt(QModificaUsuario.FieldByName('modificar_zonas').AsString);
    permiso3:= StrtoInt(QModificaUsuario.FieldByName('consultar_zonas').AsString);
    permiso4:= StrtoInt(QModificaUsuario.FieldByName('agregar_cobr').AsString);
    permiso5:= StrtoInt(QModificaUsuario.FieldByName('modificar_cobr').AsString);
    permiso6:= StrtoInt(QModificaUsuario.FieldByName('consultar_cobr').AsString);
    permiso7:= StrtoInt(QModificaUsuario.FieldByName('capturar_entregas').AsString);
    permiso8:= StrtoInt(QModificaUsuario.FieldByName('modificar_entregas').AsString);
    permiso9:= StrtoInt(QModificaUsuario.FieldByName('validar_entregas').AsString);
    permiso10:= StrtoInt(QModificaUsuario.FieldByName('agregar_usuarios').AsString);
    permiso11:= StrtoInt(QModificaUsuario.FieldByName('modificar_usuarios').AsString);
    permiso12:= StrtoInt(QModificaUsuario.FieldByName('consultar_usuarios').AsString);
    permiso13:= StrtoInt(QModificaUsuario.FieldByName('consultar_entregas').AsString);
    fusuarios:= tfusuarios.Create(Application);
    fusuarios.BCancelar.SetFocus;
    fusuarios.ENombre.Text:= lusuarios.Items[lusuarios.ItemIndex];
    fusuarios.EPassword.Text:= QModificaUsuario.FieldByName('psw').AsString;
    fusuarios.ERepitePassword.Text:= QModificaUsuario.FieldByName('psw').AsString;
    fusuarios.EDescripcion.Text:= QModificaUsuario.FieldByName('desc_usuario').AsString;
    if permiso1 = 1 then
        fusuarios.CheckAgregaZona.Checked:= true
    else
      fusuarios.CheckAgregaZona.Checked:= false;
    if permiso2 = 1 then
      fusuarios.CheckModificaZona.Checked:= true
    else
      fusuarios.CheckModificaZona.Checked:= false;
    if permiso3 = 1 then
      fusuarios.CheckConsultaZona.Checked:= true
    else
      fusuarios.CheckConsultaZona.Checked:= false;
    if permiso4 = 1 then
      fusuarios.CheckAgregaCobrador.Checked:= true
    else
      fusuarios.CheckAgregaCobrador.Checked:= false;
    if permiso5 = 1 then
      fusuarios.CheckModificaCobrador.Checked:= true
    else
      fusuarios.CheckModificaCobrador.Checked:= false;
    if permiso6 = 1 then
      fusuarios.CheckConsultaCobrador.Checked:= true
    else
      fusuarios.CheckConsultaCobrador.Checked:= false;
    if permiso7 = 1 then
      fusuarios.CheckCapturaEntrega.Checked:= true
    else
      fusuarios.CheckCapturaEntrega.Checked:= false;
    if permiso8 = 1 then
      fusuarios.CheckModificaEntrega.Checked:= true
    else
      fusuarios.CheckModificaEntrega.Checked:= false;
    if permiso9 =1 then
      fusuarios.CheckValidaEntrega.Checked:= true
    else
      fusuarios.CheckValidaEntrega.Checked:= false;
    if permiso10=1 then
      fusuarios.CheckAgregaUsuario.Checked:= true
    else
      fusuarios.CheckAgregaUsuario.Checked:= false;
    if permiso11= 1 then
      fusuarios.CheckModificaUsuario.Checked:= true
    else
      fusuarios.CheckModificaUsuario.Checked:= false;
    if permiso12 = 1 then
      fusuarios.CheckConsultarUsuario.Checked:= true
    else
      fusuarios.CheckConsultarUsuario.Checked:= false;
    if permiso13=1 then
      fusuarios.CheckConsultarEntrega.Checked:= true
    else
      fusuarios.CheckConsultarEntrega.Checked:= false;

    fusuarios.ENombre.Enabled:= false;
    fusuarios.EPassword.Enabled:= false;
    fusuarios.ERepitePassword.Enabled:= false;
    fusuarios.EDescripcion.Enabled:= false;
    fusuarios.CheckAgregaZona.Enabled:= false;
    fusuarios.CheckModificaZona.Enabled:= false;
    fusuarios.CheckConsultaZona.Enabled:= false;
    fusuarios.CheckAgregaCobrador.Enabled:= false;
    fusuarios.CheckModificaCobrador.Enabled:= false;
    fusuarios.CheckConsultaCobrador.Enabled:= false;
    fusuarios.CheckCapturaEntrega.Enabled:= false;
    fusuarios.CheckModificaEntrega.Enabled:= false;
    fusuarios.CheckValidaEntrega.Enabled:= false;
    fusuarios.CheckConsultarEntrega.Enabled:= false;
    fusuarios.CheckAgregaUsuario.Enabled:=false;
    fusuarios.CheckModificaUsuario.Enabled:= false;
    fusuarios.CheckConsultarUsuario.Enabled:= false;
    fusuarios.BAceptar.Enabled:= false;
    fusuarios.BAceptar.Visible:= false;
    fusuarios.Show();
end;

procedure TFModificaUsuarios.BModificarClick(Sender: TObject);
var
    Fusuarios: TFusuarios;
begin
      fusuarios:= tfusuarios.Create(Application);
      fusuarios.EPassword.SetFocus;
      fusuarios.ENombre.Enabled:= false;
      Fusuarios.ENombre.Text:= lusuarios.Items[lusuarios.ItemIndex];
      fusuarios.Show();
end;

procedure TFModificaUsuarios.BSalirClick(Sender: TObject);
begin
      close();
end;

procedure TFModificaUsuarios.EUsuarioChange(Sender: TObject);
var
    texto, item: String;
    i: integer;
begin // selecciona el item mas proximo al que se escribe
    texto:= AnsiUpperCase(EUsuario.Text);
    for i := 0 to lusuarios.Count - 1 do
    begin
          item:= AnsiUpperCase(Lusuarios.Items[i]);
          if Pos(texto, item) = 1 then
          begin
              lusuarios.ItemIndex:= i;
              Bmodificar.Enabled:= true;
              Bborrar.Enabled:= true;
              Bconsultar.Enabled:= true;
          end;
    end;
    if eusuario.text = '' then
    begin
        lusuarios.ItemIndex:= -1;
        bmodificar.Enabled:= false;
        bconsultar.Enabled:= false;
        bborrar.Enabled:= false;
    end;

end;

procedure TFModificaUsuarios.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
    release();
end;

procedure TFModificaUsuarios.FormCreate(Sender: TObject);
begin
      qusuarios.Active:= true;
      qusuarios.Open;
      lusuarios.Items.Clear;      //se limpia el list box
      qusuarios.First;            // se va al primer registro
      while not qusuarios.Eof do  // se añaden los campos al list box
      begin
            lusuarios.Items.Add(AnsiUpperCase(qusuarios.FieldByName('usuario').AsString));
            qusuarios.Next;
      end;
      qusuarios.Close;
      qusuarios.Active:= false;
end;

procedure TFModificaUsuarios.LUsuariosClick(Sender: TObject);
begin
      if lusuarios.ItemIndex <> -1 then
      begin
          Bmodificar.Enabled:= true;
          Bborrar.Enabled:= true;
          Bconsultar.Enabled:= true;
          EUsuario.Text:= lusuarios.Items[lusuarios.ItemIndex]; // se agrega el item al edit
       end;

end;

end.

Última edición por rgstuamigo fecha: 31-01-2011 a las 21:02:31. Razón: Estética en el código
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ayuda con mysql en kubuntu Robert01 MySQL 1 22-12-2008 11:03:47
MySQL Gratis AYUDA!! cmm07 Varios 8 11-06-2008 14:30:02
Ayuda con MySQL pelaorb68 SQL 4 16-03-2007 22:32:47
ayuda mysql server tato Varios 2 14-12-2005 18:50:45


La franja horaria es GMT +2. Ahora son las 03:12:35.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi