MySQL-এ বিল্ট-ইন AES_ENCRYPT() এবং AES_DECRYPT() ফাংশন ব্যবহার করে ডেটা এনক্রিপ্ট ও ডিক্রিপ্ট করা যায়।
সিনট্যাক্স
-- এনক্রিপ্ট করে ইনসার্ট INSERT INTO yourTableName VALUES (AES_ENCRYPT(yourValue, yourSecretKey)); -- ডিক্রিপ্ট করে পড়া SELECT CAST(AES_DECRYPT(yourColumnName, yourSecretKey) AS CHAR) FROM yourTableName;
উদাহরণ
টেবিল তৈরি (BLOB টাইপ ব্যবহার করা হয়েছে বাইনারি ডেটা রাখতে):
CREATE TABLE demo63 (
value BLOB
);
এনক্রিপ্ট করে ইনসার্ট (সিক্রেট কী: 'PASS'):
INSERT INTO demo63 VALUES (AES_ENCRYPT('John', 'PASS'));
INSERT INTO demo63 VALUES (AES_ENCRYPT('David', 'PASS'));
INSERT INTO demo63 VALUES (AES_ENCRYPT('123456', 'PASS'));
এনক্রিপ্টেড ডেটা (হেক্স ফরম্যাটে):
+------------------------------------+ | value | +------------------------------------+ | 0x16D8A4F11321D761920783BF96BB8314 | | 0x0A85099F705F21D27B0129C54C4473AA | | 0xAB7C6D6068BC100B0F04D1C4EA068AC9 | +------------------------------------+
ডিক্রিপ্ট কোয়েরি
SELECT CAST(AES_DECRYPT(value, 'PASS') AS CHAR) FROM demo63;
আউটপুট
+------------------------------------------+ | CAST(AES_DECRYPT(value, 'PASS') AS CHAR) | +------------------------------------------+ | John | | David | | 123456 | +------------------------------------------+
ব্যাখ্যা:
AES_ENCRYPTAES (Advanced Encryption Standard) алгорит্ম ব্যবহার করে ১২৮-বিট কী দিয়ে এনক্রিপ্ট করে।CAST(... AS CHAR)বাইনারি রেজাল্টকে পাঠযোগ্য স্ট্রিংএ কনভার্ট করে।- একই সিক্রেট কী দিয়ে ডিক্রিপ্ট করতে হয়।
- বড় ডেটার জন্য
AES_ENCRYPTব্লক সাইজ (১৬ বাইট) অনুযায়ী প্যাডিং করে।
সিকিউরিটি নোট: সিক্রেট কী কোডে হардকোড না করে ইনভায়রনমেন্ট ভেরিয়েবল বা কী ম্যানেজমেন্ট সিস্টেম থেকে নেওয়া উচিত।