0

i have a problem when i try to save encrypted "password-text" to SQL server 2008r2 Database. When i save from java-Netbeans, sql receives "?????" on text field, i found that is because or unicode... i'm using BLOWFISH Encryption (The class works perfect) but i can't decrypt it because i'm getting from DB "????" text instead of original text(password)

Do you know how can i fix this issue?, a friend told to use "varbinary" on DB instead of "varchar", but no idea how to do :S

Thanks

public boolean SavetoDB() {
    DATABASE_CONNECTION con = new DATABASE_CONNECTION();
    cn = con.conectar();

    boolean resp = false;
    try {
        String sql = "INSERT INTO cliente(usuario, pass, Nombre, Apellido, Edad,"
                + "genero, Direccion, Telefono, Celular, img_name,tipo_cuenta, ipaddress, puerto,segundos,minutos,horas)"
                + " VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?,?,?,?,?)";
        PreparedStatement cmd = cn.prepareStatement(sql);
        cmd.setString(1, usuario);
        cmd.setString(2, pass);
        cmd.setString(3, Nombre);
        cmd.setString(4, Apellido);
        cmd.setInt(5, Edad);
        cmd.setString(6, genero);
        cmd.setString(7, Direccion);
        cmd.setInt(8, Telefono);
        cmd.setInt(9, Celular);
        cmd.setString(10, nombrearch);
        cmd.setString(11, tipo_cuenta);
        cmd.setString(12, ip);
        cmd.setString(13, puerto);
        cmd.setInt(14, 1);
        cmd.setInt(15, 0);
        cmd.setInt(16, 0);
        ////////////////////////////////////////////////////////
        ///////////////////////////////////////////////////////


        if (!cmd.execute()) {
            resp = true;
        }
        cmd.close();
        cn.close();
    } catch (Exception ex) {
        System.out.println("Error: " + ex.getMessage());
    }
    return resp;
}

SQL TABLE:

create table cliente(

usuario varchar(15) not null primary key,

pass varchar(90) not null,

Nombre varchar(32) not null,

Apellido varchar(32) not null,

Edad int not null,

genero varchar(15) not null,

Direccion varchar(32),

Telefono int,

Celular int,

img_name varchar(32) not null,

tipo_cuenta varchar(15) not null,

fecha_creacion date,

ipaddress varchar(20) not null,

puerto varchar (30) not null,

segundos int not null,

minutos int not null,

horas int not null,

)

4

1 に答える 1

1

パスワードテキストバイトのmd5/shaダイジェストをデータベースに保存してみてください。パスワードを確認する必要がある場合は、入力したパスワードのダイジェストを計算し、データベース内のパスワードと比較してください。

于 2012-10-12T22:19:36.713 に答える