09/10/2018, 23:41
Thảo luận vấn đề mã hóa Mật Khẩu [PHP]
Dear cả nhà,
Hôm nay mình có một vài điều cần thảo luận chung với các coder php có kinh nghiệm và lẫn các chiến hữu mới ra nghề.
Hiện theo mình biết dạng mã hóa md5 đang phổ biến, như các diễn đàn chẳng hạn. Đơn cử như DDTH mình. Khi 1 new mem reg account, thì mật khẩu sẽ bị mã hóa thành 32 ký tự (VD:e389f3ec60a151c5a23f6e688f4bfa00). Và ai cũng biết ko dể gì dịch ngược loại này, cho dù có cả Dictionary sẵn hay các website chuyên dịch ngược (MD5 Cracker, Hash MD5...) như Gdata...v.v.v
Tuy nhiên trong một số trường hợp mình nhận thấy, có các coder tự viết code để mã hóa.
Ví du một mã nguồn web được share trên freecodevn, khi view database SQL mình nhìn thấy 1 Row được add vào 1 table như sau:
Như vậy username:Tuan123456 có pass ở đây đã được mã hóa thành aakcR08PK3l1o
Như vậy trong phần set mã khóa pass, coder đã thực hiện những dòng code có thể có như thế nào.Hay dùng 1 source code có sẵn nào mà bản thân Mình chưa được Học-Biết-Thấy. Và khả năng an toàn của pass đã mã hóa trên.
Bạn hãy thử 1 đoạn code để có kết quả mã hóa như trên. Và khả năng
Mình chúng ta cùng thảo luận trên tinh thần học hỏi, ko đâm chọt nhau.
Rất mong mọi người hưởng ứng.
Hôm nay mình có một vài điều cần thảo luận chung với các coder php có kinh nghiệm và lẫn các chiến hữu mới ra nghề.
Hiện theo mình biết dạng mã hóa md5 đang phổ biến, như các diễn đàn chẳng hạn. Đơn cử như DDTH mình. Khi 1 new mem reg account, thì mật khẩu sẽ bị mã hóa thành 32 ký tự (VD:e389f3ec60a151c5a23f6e688f4bfa00). Và ai cũng biết ko dể gì dịch ngược loại này, cho dù có cả Dictionary sẵn hay các website chuyên dịch ngược (MD5 Cracker, Hash MD5...) như Gdata...v.v.v
Tuy nhiên trong một số trường hợp mình nhận thấy, có các coder tự viết code để mã hóa.
Ví du một mã nguồn web được share trên freecodevn, khi view database SQL mình nhìn thấy 1 Row được add vào 1 table như sau:
Code:
CREATE TABLE `user` ( `userID` int(11) NOT NULL auto_increment, `firstname` varchar(160) NOT NULL default ', `lastname` varchar(160) NOT NULL default ', `username` varchar(160) NOT NULL default ', `email` varchar(160) NOT NULL default ', `password` varchar(30) NOT NULL default ', ..... INSERT INTO `user` VALUES (1, 'Tran', 'Tuan', 'Tuan123456', 'email@gmail.com', 'aakcR08PK3l1o'...);
Như vậy trong phần set mã khóa pass, coder đã thực hiện những dòng code có thể có như thế nào.Hay dùng 1 source code có sẵn nào mà bản thân Mình chưa được Học-Biết-Thấy. Và khả năng an toàn của pass đã mã hóa trên.
Bạn hãy thử 1 đoạn code để có kết quả mã hóa như trên. Và khả năng
Mình chúng ta cùng thảo luận trên tinh thần học hỏi, ko đâm chọt nhau.
Rất mong mọi người hưởng ứng.
Bài liên quan
mysql> SELECT PASSWORD('badpwd');
-> '7f84554057dd964b'
Khi người dùng tạo mật khẩu của họ, hãy khuyên chọn những mật khẩu có độ an toàn cao. Nhớ viết thêm vài hàm loại những mật khẩu có kiểu như toàn số, hoặc trùng với tên đăng nhập .vv.v.
Đó là mình chuyển password Tuan123456 của bạn thành một char array được 1 array và convert từng char sang byte
T: 84
u: 117
a: 97
n: 110
1: 49
2: 50
3: 51
4: 52
5: 53
6: 54
sau đó mỗi số trên lần lượt nhân với 1 số tùy ý! Sau đó ghép tất cả lại 1 string mỗi số cách nhau 1 số để vì sau khi dịch ngược lại thì có thể ghép lại string ban đầu
Với password trên với basecrypt là 1987 thì có kết quả mã hóa sau:
166908|232479|192739|218570|97363|99350|101337|103 324|105311|107298
Bạn có thể lấy giá trị ASCII của từng char 1 và làm tương tự
Mình hồi trước thì dùng cái này của mình nhưng giờ thì hoàn toàn sài MD5 rồi!