কম্পিউটার টিউটোরিয়াল

MySQL-এ MD5 পাসওয়ার্ডকে SHA256-এ রূপান্তর করা

MySQL-এ SHA2() ফাংশন ব্যবহার করে MD5 হ্যাশ করা পাসওয়ার্ডকে আরও নিরাপদ SHA-256-এ রূপান্তর করা যায়। SHA2() SHA-2 ফ্যামিলি (SHA-224, SHA-256, SHA-384, SHA-512) সমর্থন করে।

উদাহরণ: টেবিল তৈরি এবং MD5 পাসওয়ার্ড ইনসার্ট

mysql> create table DemoTable818(UserPassword text); 
Query OK, 0 rows affected (0.51 sec)
mysql> insert into DemoTable818 values(MD5('John_123')); 
Query OK, 1 row affected (0.11 sec) 
mysql> insert into DemoTable818 values(MD5('999Carol@22')); 
Query OK, 1 row affected (0.14 sec)

MD5 হ্যাশ দেখানো

mysql> select * from DemoTable818;
+----------------------------------+
| UserPassword                     |
+----------------------------------+
| 47c7d0987db4e59e2264ce9fefce4977 |
| 950aa70edd5b686a807b3bfffdf2248c |
+----------------------------------+
2 rows in set (0.00 sec)

MD5 থেকে SHA-256-এ রূপান্তর (UPDATE)

mysql> update DemoTable818 set UserPassword=SHA2(UserPassword,256); 
Query OK, 2 rows affected (0.19 sec) 
Rows matched: 2  Changed: 2  Warnings: 0

রূপান্তর後の হ্যাশ দেখানো

mysql> select * from DemoTable818;
+------------------------------------------------------------------+
| UserPassword                                                     |
+------------------------------------------------------------------+
| 8b68c46294a9ccb2449324c24fe774f95b7c14e4b56fc51c7f8e6c5b01c7020f |
| 9cc80741546051ae3de7d31246327968c98af3c65125376acb7b49a0760d42a3 |
+------------------------------------------------------------------+
2 rows in set (0.00 sec)

গুরুত্বপূর্ণ নিরাপত্তা নোট

⚠️ সতর্কতা: এই পদ্ধতিতে MD5 হ্যাশকে SHA-256-এ হ্যাশ করা হয়েছে, মূল প্লেইন টেক্সট পাসওয়ার্ড থেকে SHA-256 তৈরি করা হয়নি। এটি "হ্যাশ অফ হ্যাশ" যা নিরাপত্তা দৃষ্টিকোণ থেকে আদর্শ নয়।

সঠিক পদ্ধতি (পাসওয়ার্ড রি-হ্যাশ)

  1. ব্যবহারকারী পরবর্তী লগইন করলে প্লেইন পাসওয়ার্ড পাওয়া যায়
  2. তখন SHA2(plain_password, 256) বা ভালো হয় bcrypt/argon2 দিয়ে নতুন হ্যাশ সেট করুন
  3. পুরনো MD5 কলামটি মুছে দিন

MySQL ৮.০-এ ভালো পাসওয়ার্ড হ্যাশিং

-- SHA2-256 (যদি bcrypt না থাকে)
SELECT SHA2('my_password', 256);

-- নেটিভ পাসওয়ার্ড হ্যাশিং (MySQL 8.0+)
SELECT PASSWORD('my_password'); -- caching_sha2_password
  1. MySQL-এ নির্দিষ্ট ৩টি মানের জন্য একটি কলাম তৈরি করা (ENUM টাইপ)

  2. MySQL টেবিলে 'year' রিজার্ভড ওয়ার্ড কী কলাম নাম হিসেবে ব্যবহার করা যায় কিনা?

  3. MySQL টেবিলের জন্য 'user' শব্দ ব্যবহার করা যাবে কি?

  4. MySQL 8.0-এ 'rank' রিজার্ভড ওয়ার্ড: কলাম নাম হিসেবে ব্যাকটিকস (`rank`) ব্যবহার করুন