Criar tabela no mysql com MD5

caros colegas,
outro dia criei um banco de dados no mysql e no campo senha inseri o (MD5), que em pesquisa, é uma forma de criptografar os dados, não sei como, perdi esse banco, e agora estou criando-o novamente, porém não me lembro como faço para colocar o (MD5). Acho que o script era mais ou menos assim:

create table usuario(id int(10) not null, usuario varchar(10), (MD5) senha varchar(10);

O problema ta aí, dá erro e não consigo de forma alguma lembrar. Será que alguém poderia informar-me como proceder de forma correta, ou há outra forma de criptografar a senha?

Obrigado a todos.
Gusmborgfe

Até onde sei, você só consegue inserir dados criptografados e não definir que a coluna será criptografada…

INSERT INTO tabela VALUES (md5('nome'));

Caro colega,
da forma que informou insiro na string porém também gera erro. Acredito que se fizer direto no banco poderei utilizar a string (insert into usuario) values (usuario,senha) e no banco compilaria criptografando a senha.

Na verdade, essa não é uma boa forma de gravar senha.
Usar MD5 assim não torna sua senha segura.

Se você quiser ser dar o trabalho de fazer isso da forma correta (e aí deve avaliar o impacto para você e seus usuários se o banco de dados fosse comprometido), tem alguns tópicos que deve considera: usar salt, um algoritmo de hash específico para passwords (como o scrypt, entre outras considerações.

Pesquisando com cuidado achará uma receita pronta na internet com todos esses passos (eu fiz uma pesquisa por cima, mas não conseguir achar nada interessante…a preguiça falou mais alto).

Será que poderiam me ajudar:

Tenho a seguinte String que salva novo usuário no banco:

[code]public void cadastrar(Usuario u) throws Exception
{
OpenDatabase();
sql = “INSERT INTO tbusuario (login, senha)”
+ “VALUES(?,?)”;

    ps = con.prepareStatement(sql);
    
    ps.setString(1, u.getNome());
    ps.setString(2, u.getSenha());
    
    ps.execute();
    CloseDatabase();
}[/code]

Nessa situação, como faço para que a senha fique criptografada no banco de dados?
Obrigado.

[quote=gusmborges]Caro colega,
da forma que informou insiro na string porém também gera erro. Acredito que se fizer direto no banco poderei utilizar a string (insert into usuario) values (usuario,senha) e no banco compilaria criptografando a senha.[/quote]
Sinceramente, nunca vi esta sintaxe.
Parece coisa errada.
Até onde sei, o MySQL suporte

INSERT INTO <TABELA> <(COLUNAS)> VALUES <(VALORES)>;

E, quando quer-se criptografar, usando MD5, ele possui uma função (function) própria, cuja chamada ocorre da forma que citei anteriormente.
Quem sabe se você se der ao trabalho de ler a documentação do MySQL, talvez encontre algo que te ajude.
Repito, nunca vi criar colunas criptografáveis/criptografadas.

Meus caros colegas,
Acho que não me expressei corretamente, peço desculpas…

Esta é a string que uso para inserir novo usuário no banco de dados (funciona corretamente).

sql = ("INSERT INTO tbusuario (login, senha) VALUES (?, ?)";

Agora estou tentando inserir, porém criptografando a senha. Ja tentei utilizar este comando:

sql = ("INSERT INTO tbusuario (login, senha) VALUES (?, md5(?)");

Contudo dá o seguinte erro:

Tentei ser o mais claro possível para que possam me ajudar. E mais uma vez agradeço pelas postagens enviadas.