webForumDet fria alternativet

Kryptering med hexresultat med SP i mySql

Programmering

0 svar · 5 190 visningar · startad av Jesper T

Medlem sedan nov. 20017 144 inlägg
Frågan#1

Jag hade lust att göra en liten krypteringsfunktion i en lagrad procedur för mySql 5+ och återanvända lösenordet varje gång men ändå göra den lite "säkrare" genom att lägga till lite slumpade bokstäver/siffror.

Detta gör jag med två stycken lagrade procedurer varpå jag kallar på funktionen RandChars i funktionen Kryptonit.

Kryptera:
SELECT Kryptonit('Kalle',1) Krypterad
Resultat: 56B76F4F1366C30CA639A5FEB84D45F0

Dekryptera:
SELECT Kryptonit('56B76F4F1366C30CA639A5FEB84D45F0',0) Dekrypterad
Resultat: Kalle

Vad skall ja nu använda detta till?

Jo jag tänkt att mina "medlemmar" skulle få ett mail varpå de skall klicka på en länk och för att verifiera att personen klickat på "rätt" länk med rätt id så skulle jag kunna skicka med det krypterade id:t/namnet i länken och se till att de matchar.

CREATE FUNCTION `Kryptonit`(str varchar(2000),met tinyint(1)) RETURNS varchar(4000)
BEGIN
DECLARE secureKey varchar(13);
DECLARE outpt varchar(2000);

Set secureKey = '6uQ%t-Td_*';

If met = 1 then
    RETURN HEX(AES_ENCRYPT(concat(RandChars(6),str),secureKey));
Else
    Set outpt = AES_DECRYPT(UNHEX(str),secureKey);
    RETURN Right(outpt,length(outpt)-6);
End if;
END;

CREATE FUNCTION `RandChars`(chr tinyint) RETURNS varchar(50)
BEGIN
  DECLARE v1 INT DEFAULT chr;
  DECLARE str varchar(62);
  DECLARE build varchar(10) default '';
  Set str = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVXYZ";
  
  WHILE v1 > 0 DO
    SET build = concat(build,MID(str,(RAND() * 61)+1, 1));
    SET v1 = v1 - 1;
  END WHILE;
  RETURN build;
END;

Ett tips är att inte använda för långa strängar då min lilla slumpfunktion slutar tappa i värde...

Kommentera gärna funktion och nytta.

314 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
192 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)