(AES_ENCRYPT(string,key_string
(AES_DECRYPT(string,key_string
הפונקציות הללו מאפשרות הצפנה/פענוח של נתונים באמצעות האלגוריתם הרשמי AES
(Advanced Encryption Stanard). משתמשים בהצפנה עם מפתח באורך 128 ביטים, אבל ניתן להרחיבו ל-256 ביטים ע"י שינוי המקור. אנו בוחרים בהצפנה של 128 ביטים בגלל שהיא יותר מהירה ומאובטחת בצורה מספקת. הארגומנטים בקלט יכולים להיות באורך כלשהו. אם אחד מהארגומנטים הוא NULL, התוצאה תהיה גם NULL. שום ש-AES הוא אלגוריתם block-level (סרגל פלס), משתמשים ב"ריפוד" כדי להצפין מחרוזות באורך לא זוגי ולכן אורך המחרוזת בתוצאה יכולה להיות מחושבת כ- 16*(trunc(string_length/16)+1). אם הפונקציה ()AES_DECRYPT מבחינה בנתון לא חוקי או ב"ריפוד" שגוי, היא מחזירה NULL. אולם, הפונקציה יכולה להחזיר ערך NON-NULL (כנראה "זבל") אם נתוני הקלט או המפתח אינם חוקיים. ניתן להשתמש בפונקציות AES כדי לאחסן מידע בצורה מוצפנת באמצעות עדכון השאילתות:
;(('INSERT INTO t VALUES (1,AES_ENCRYPT('text','password |
ע"י אי שליחת המפתח בקשר שנוצר לכל שאילתא ניתן לקבל יותר אבטחה. ניתן לבצע זאת ע"י אחסון המפתח בשרת משני משתנה בזמן הקשר שנוצר.
לדוגמא:
SELECT @password:='my password'; INSERT INTO t VALUES (1,AES_ENCRYPT('text',@password)); |
(DECODE(crypt_str,pass_str
מצפין ומפענח מחרוזת crypt_str באמצעות pass_str כסיסמא. Crypt_str צריכה להיות מחרוזת שהוחזרה מהפונקציה ()ENCODE .
(DECODE(str,pass_str
מצפין את str באמצעות pass_str כסיסמא. כדי לפענח את התוצאה, נשתמש ב-()DECODE . התוצאה היא מחרוזת בינארית באורך זהה ל-string. כאשר נרצה לשמור את זה בעמודה, נשתמש בסוג העמודה BLOB.
([DES_DECRYPT(string_to_decrypt [,key_string
מפענח מחרוזת שהוצפנה באמצעות הפונקציה ()DES_ENCRYPT .אם לא סופק הארגומנט key_string, הפונקציה ()DES_DECRYPT תבחן את ה-byte הראשון של המחרוזת המוצפנת כדי לקבוע את מספר מפתח ה-DES שהשתמשו בו כדי להצפין את המחרוזת המקורית, ואז הוא יקרא את המפתח מ-des-key-file כדי לפענח את ההודעה. לפעולה זו, למשתמש צריך להיות הרשאות SUPER. אם נשתמש בפונקציה זו עם הארגומנט key_string, ישתמשו בארגומנט זה כדי לפענח את ההודעה. אם string_to_decrypt לא נראית כמחרוזת מוצפנת, MYSQL יחזיר את המחרוזת שניתנה, string_to_decrypt. במקרה של שגיאה, הפונקציה תחזיר NULL.
([(DES_ENCRYPT(string_to_encrypt[,(key_number,key_string
מצפין את המחרוזת ע"י המפתח שניתן, באמצעות אלגוריתם Tripe-DES. מפתח ההצפנה נבחר בצורה הבאה:
ארגומנט |
תיאור |
ארגומנט בודד |
משתמשים במפתח הראשון מתוך des-key-file. |
מספר מפתח | משתמשים במפתח הנתון (0-9) מתוך des-key-file. |
מחרוזת | משתמשים ב-key_string הנתון כדי להצפין את string_to_encrypt. |
המחרוזת שתוחזר תהיה מחרוזת בינארית כאשר התו הראשון יהיה CHAR
(128 | key_number). ה-128 נוסף כדי להצליח בקלות יותר להבחין במפתח מוצפן. אם נשתמש במפתח מחרוזת, key_number יהיה 127. במקרה של שגיאה, הפונקציה תחזיר NULL. אורך המחרוזת בתוצאה יהיה new_length שאורכו מחושב ע"י הפונקציה:
org_length+(8-(org_length%8))+1. ל-des-key-file יהיה הפורמט הבא:
|
כל key_number חייב להיות מספר בטווח של 0 עד 9. שורות בקובץ יכולות בסדר כלשהו. Des_key_string היא מחרוזת שמשתמשים בה כדי להצפין את ההודעה. בין המספר והמפתח צריך להיות לפחות מרווח אחד. המפתח הראשון הוא ברירת המחדל שייעשה בו שימוש כאשר לא נגדיר את ארגומנט המפתח ב-()DES_ENCRYPT .
|
([ENCRYPT(str [,salt
מצפין את str באמצעות קריאת המערכת ()crypy של UNIX. ארגומנט ה-salt צריך להיות מחרוזת בעלת שני תווים.
|
()ENCRYPT מתעלם מהכל למעט שמונת התווים הראשונים של str, לפחות בכמה מערכות. התנהגות זו נקבעת ע"י יישום קריאת המערכת המעורפלת ()crypt.בגלל זה אנו ממליצים להשתמש ב-()MD5 או ב-()SHA1 במקום.
(MD5(string
מחשב את בדיקת מספר הסיביות MD5 128-bit למחרוזת. הערך מוחזר כ-32 ספרות ב-hex.
|
(PASSWORD(str
(OLD_PASSWORD(str
מחשב את מחרוזת הסיסמא מ-str. זו הפונקציה שמשתמשים בה להצפין סיסמאות MYSQL כדי לאחסן בטור ה-password בטבלה של user:
|
הצפנה באמצעות ()PASSWORD היא בלתי הפיכה. ()PASSWORD לא מבצעת את הצפנת הסיסמא באותה דרך שסיסמאות UNIX מוצפנות.
(SHA1(string
(SHA(string
מחשב את בדיקת מספר הסיביות SHA1 160-bit למחרוזת. הערך מוחזר כ-40 ספרות ב-hex, או כ-NULL במקרה וארגומנט הקלט היה גם NULL.
|