در این مقاله سعی داریم برخی از توابع رمزنگاری ، درهم سازی یا hash و همچنین توابع فشرده سازی اطلاعات در MySQL را معرفی نماییم .
در جدول زیر برخی از توابع کاربردی معرفی شده است :

نام توضیحات
()AES_ENCRYPT  رمزنگاری بر اساس الگوریتم AES
()AES_DECRYPT رمزگشایی بر اساس الگوریتم AES
()COMPRESS نتیجه را به عنوان یک رشته باینری فشرده برمیگرداند
()UNCOMPRESS خروجی تابع COMPRESS را از حالت فشردگی خارج میکند
()MD5 محاسبه مقدار هش الگوریتم MD5
()SHA1 محاسبه درهم سازی 160 بیتی یک رشته با الگوریتم SHA1
()SHA2 محاسبه هش یک رشته با الگوریتم SHA2
VALIDATE_PASSWORD_STRENGTH تعیین قدرت رمز عبور
()RANDOM_BYTES برگرداندن بایت های تصادفی براساس طول ورودی


 AES_ENCRYPT  و AES_DECRYPT : 
بر اساس الگوریتم AES یا (Advanced Encryption Standard) که قبلا به عنوان الگوریتم "Rijndael" شناخته میشد ورودی را رمزنگاری و رمزگشایی میکنند ، طول کلید پیش فرض برای رمزنگاری در این الگوریتم 128 بیت است .
تابع AES_ENCRYPT  دو پارامتر  اولیه را دریافت میکند ، پارامتر اول رشته ای که قرار است رمزنگاری شود و پارامتر دوم کلید رمزنگاری :

SELECT AES_ENCRYPT("RezaEskandari",UNHEX(123456));
      -> 0xd12b819377e7face168a3d3bbed83c6b​


حال میتوان رشته رمزنگاری شده را با استفاده از تابع AES_DECRYPT و پاس دادن کلید رمزنگاری ، رمزگشایی نمود :

SELECT AES_DECRYPT(0xd12b819377e7face168a3d3bbed83c6b,UNHEX(123456));
       ->RezaEskandari


COMPRESS - UNCOMPRESS :
COMPRESS یک رشته را فشرده و نتیجه را به عنوان رشته باینری باز می گرداند این تابع برای کار نیاز به کتابخانه zlib  دارد ، واگرنه خروجی را به صورت NULL برمیگرداند .

SELECT  COMPRESS('ABCD0123');
     -> 0x08000000789c7374727631303432060008ae01d1
SELECT UNCOMPRESS(0x08000000789c7374727631303432060008ae01d1);
      ->ABCD0123


تابع MD5 :
یک هش 128 بیتی برای رشته ورودی اعمال میکند . خروجی آن نیز یک مقدار 32 رقمی هگزادسیمال میباشد .

SELECT MD5('PASSWORD');
      -> 319f4d26e3c536b5dd871bb2c52e3178


تابع SHA1 :
این تابع مقدار HASH رشته ورودی را با الگوریتم SHA-1 محاسبه میکند ، خروجی این تابع یک رشته هگزادسیمال به طول 40 کاراکتر میباشد .

SELECT SHA1('PASSWD');
      ->dd6be78993bf6c58f5af3c87dc7467e318c8d5e4


تابع SHA2 :
این الگوریتم هم خانواده الگوریتم های  (SHA-224, SHA-256, SHA-384, and SHA-512) میباشد . این تابع 2 ورودی را دریافت میکند ، اولی رشته ای که قرار است HASH شود و دومین آرگومان هم مقدار بیت های خروجی را تعیین  میکند .
طول بیت های این الگوریتم باید به اندازه اعداد (224, 256, 384, 512) یا عدد 0 که معدل 256 است باشد ، واگرنه خروجی NULL میباشد .

SELECT SHA2('QWERTY',224);
      ->217b8bf9b33daffbb331ec3c98f38923155dd161d00c060090


VALIDATE_PASSWORD_STRENGTH :
این تابع رشته ورودی را به عنوان پسورد دریافت کرده و خروجی آن عددی بین 0 تا 100 است که تعیین کننده قدرت رمزعبور میباشد .

select VALIDATE_PASSWORD_STRENGTH('ZTOU');
      ->25


به وسیله کدهای زیر میشود سیاست های قدرت رمزعبور را تغییر داد .

SET GLOBAL validate_password.policy=low;

SET GLOBAL validate_password.policy=medium;

SET GLOBAL validate_password.policy=strong;


RANDOM_BYTES :
این تابع  یک ورودی از کاربر برای تعیین کردن طول خروجی دریافت میکند و بایت هایی را به صورت تصادفی ایجاد میکند ، یکی از کاربردهای این تابع ایجاد کلید و vector برای توابع AES_ENCRYPT و AED_DESCRYPT میباشد .