Estou procurando gerar uma string criptograficamente segura para redefinição de senha no MySQL. Sei que poderia fazer isso no nÃvel do aplicativo em PHP; mas isso requer a extensão OpenSSL que muitos de meus clientes podem não ter.
Se eu puder fazer isso no MySQL 5 de uma maneira segura e amplamente disponÃvel, seria o ideal. Isso é possÃvel?
Nota: Isso é para gerar um token seguro para redefinição de senha. Não tem nada a ver com uma conexão segura, então usar https não é uma solução.
Existem muitos métodos de criptografia disponÃveis no mySQL.
Se você precisar de criptografia bidirecional, poderá usar
aes_encrypt
o que acompanhaaes_decrypt
Se você precisar apenas de um hash seguro, poderá usar
sha2
A declaração a seguir pode obter um resultado semelhante ao
openssl_random_pseudo_bytes
A instrução acima pega
NOW()
e concatena comRAND()
e aUUID()
, então executa uma criptografia de 512 bitsSHA2()
no resultado e, em seguida, converte isso emHEX()
Este é o gerador de números aleatórios do MySQL:
Você precisará passar um grande valor aleatório de fora. Digamos que você precise de um número aleatório de 512 bits que seja exclusivo garantido. Isso pode ser suficiente:
Digamos que gibberish512 seja um argumento para um procedimento armazenado que chama rand em muitos valores, tudo em alguns milissegundos, e um carimbo de data/hora revela quando isso aconteceu. MySQL rand () tem menos de 64 bits de entropia por conta própria. passando um argumento aleatório de fora (gerado a partir de digitação aleatória, jogadas de dados ou um prng criptorandom apropriado, etc).