Ce face RANDOM_BYTES()
RANDOM_BYTES() folosește generatorul de numere aleatorii al bibliotecii SSL, așa că rezultatul este potrivit pentru securitate, spre deosebire de RAND(). Lungimea poate fi între 1 și 1024 de octeți; altă valoare dă eroare.
Rezultatul este binar. Ca să-l afișezi sau să-l trimiți într-un link (de exemplu, un token de resetare a parolei), transformă-l cu HEX() sau TO_BASE64(). Pentru vectorul de inițializare al lui AES_ENCRYPT() folosește 16 octeți.
Parametri
| Parametru | Descriere |
|---|---|
lungime |
Numărul de octeți (1-1024). |
Ce returnează
Un șir binar de lungimea cerută.
Exemple
Exemplul 1: Token aleatoriu, în hexazecimal
SELECT HEX(RANDOM_BYTES(16)) AS token;
Rezultat posibil (diferă la fiecare rulare)
+----------------------------------+
| token |
+----------------------------------+
| 9F2C71A4E0B85D3367C1F04A8E2D9B56 |
+----------------------------------+
Exemplul 2: Lungimea rezultatului
Fiecare octet devine două caractere hexazecimale, iar Base64 folosește 4 caractere pentru fiecare 3 octeți.
SELECT LENGTH(RANDOM_BYTES(16)) AS octeti,
LENGTH(HEX(RANDOM_BYTES(16))) AS caractere_hex,
LENGTH(TO_BASE64(RANDOM_BYTES(30))) AS caractere_base64;
Rezultat
+--------+---------------+------------------+
| octeti | caractere_hex | caractere_base64 |
+--------+---------------+------------------+
| 16 | 32 | 40 |
+--------+---------------+------------------+
Greșeli frecvente
- Folosești
MD5(RAND())sauRAND()pentru token-uri de securitate. Valorile luiRAND()sunt previzibile; foloseșteRANDOM_BYTES(). - Salvezi rezultatul într-o coloană
VARCHAR. Este binar; foloseșteVARBINARYsau salvează formaHEX().
Comenzi înrudite
AES_ENCRYPT() și AES_DECRYPT(): Criptează și decriptează date cu algoritmul AES; fără cheie, datele nu pot fi citite.RAND(): Un număr aleatoriu între 0 (inclusiv) și 1 (exclusiv); cu seed, șirul se repetă.UUID(): Generează un identificator unic universal (UUID versiunea 1), un text de 36 de caractere.