SQL – Función para generar passwords dinámicos

Hace un par de semanas tuve la necesidad de crear una función que me devolviera un password de 11 caracteres. Este password debía ser creado de manera aleatoria por lo que me pareció interesante el ejercicio así que decidí crear una función para cada motor de base de datos que uso: Mysql, Db2,  PostgreSQL, SQL Server y Oracle.

 

Función que Genera password en Mysql

CREATE FUNCTION GENERA_PASSWORD()
    RETURNS varchar(11)
    NOT DETERMINISTIC
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN
  RETURN substr(md5(rand()),1,11);
END;


select generapassword()


 

Función que Genera password en DB2

 

CREATE FUNCTION SCHEMA.GENERA_PASWORD()
  returns VARCHAR(11)
SPECIFIC GENERAPASSWORD
BEGIN ATOMIC

    DECLARE VV_PASSWORD VARCHAR(12);
    DECLARE VI_CONTADOR INTEGER;

    SET VI_CONTADOR = 1;
    SET VV_PASSWORD = '';

    REPEAT
      SET VV_PASSWORD =  CONCAT(VV_PASSWORD,chr(64 + INT ( RAND () * 10)));
      SET VI_CONTADOR = VI_CONTADOR + 1;
      UNTIL (VI_CONTADOR>=11)
    END REPEAT;

    RETURN VV_PASSWORD;
END;

       SELECT SCHEMA.GENERA_PASWORD() 
         FROM SYSIBM.SYSDUMMY1;


 

Función que Genera password en PosgreSQL

 

CREATE OR REPLACE FUNCTION GENERA_PASSWORD()
  RETURNS text AS
  $BODY$
  BEGIN
     RETURN upper( substring(md5(to_char(trunc(random() * 99 + 1),'00')),1,11));
  END;
  $BODY$
  LANGUAGE plpgsql

 

Función que Genera password en MICROSOFT SQL SERVER 2012

 

CREATE FUNCTION DAME_PASSWORD()
RETURNS CHAR(11)
AS
BEGIN
  DECLARE @RANDVALUE AS VARCHAR(11)
      
  SET  @RANDVALUE = CAST(RAND() AS VARCHAR(11))
       RETURN CONVERT(VARCHAR(11), HashBytes('MD5', @RANDVALUE), 2)
END
GO

SELECT AdventureWorks2012.DBO.DAME_PASSWORD()

 


 

Función que Genera password en Oracle 11

 

CREATE OR REPLACE FUNCTION DAME_PASSWORD RETURN VARCHAR2 AS 
  VV_RANVALUE VARCHAR(11);
BEGIN
  VV_RANVALUE := SUBSTR(CAST(dbms_random.value(1,11) AS VARCHAR),1,11);
  VV_RANVALUE := SUBSTR(DBMS_OBFUSCATION_TOOLKIT.md5 (input => UTL_RAW.cast_to_raw(VV_RANVALUE)),1,11);
  RETURN VV_RANVALUE;
END DAME_PASSWORD;


SELECT DAME_PASSWORD() FROM DUAL;

 

Sé el primero en comentar

Deja un comentario