SHA1() și SHA() în MySQL

Criptare și hash MySQL 5.0+ (eliminată în versiunile noi)

Calculează suma de control SHA-1 a unui text (40 de cifre hexazecimale); eliminată din versiunile noi.

Sintaxă
SHA1(text)
SHA(text)

Ce face SHA1() și SHA()

SHA1() calculează o sumă de control de 160 de biți, afișată ca 40 de cifre hexazecimale. SHA() este sinonim pentru SHA1(). Era considerată mai sigură decât MD5(), dar și SHA-1 are coliziuni cunoscute.

Funcțiile nu mai există pe serverul nostru de test (MySQL 26.7): apelul dă eroarea FUNCTION ... SHA1 does not exist. Exemplele arată rezultatul din MySQL 8.4. Pentru cod nou, folosește SHA2().

Parametri

Parametru Descriere
text Textul pentru care se calculează suma.

Ce returnează

Un text de 40 de caractere hexazecimale sau NULL.

Exemple

Exemplul 1: SHA1() și sinonimul SHA()

SELECT SHA1('abc') AS sha1, SHA('abc') = SHA1('abc') AS identice;

Rezultat în MySQL 8.4

+------------------------------------------+----------+
| sha1                                     | identice |
+------------------------------------------+----------+
| a9993e364706816aba3e25717850c26c9cd0d89d |        1 |
+------------------------------------------+----------+

Exemplul 2: Înlocuitorul recomandat: SHA2()

SELECT SHA2('abc', 256) AS sha256;

Rezultat

+------------------------------------------------------------------+
| sha256                                                           |
+------------------------------------------------------------------+
| ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad |
+------------------------------------------------------------------+

Greșeli frecvente

  • Folosești SHA1() pentru parole sau semnături. Nu mai este sigur, iar funcția a fost eliminată; folosește SHA2() pentru sume de control și algoritmi dedicați (bcrypt, Argon2) pentru parole.

Comenzi înrudite

  • SHA2(): Calculează suma de control SHA-2 (SHA-224, SHA-256, SHA-384 sau SHA-512) a unui text.
  • MD5(): Calculează suma de control MD5 a unui text (32 de cifre hexazecimale); eliminată din versiunile noi.