banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận bảo mật Mã hóa MD5  XML
  [Question]   Mã hóa MD5 06/06/2007 10:59:39 (+0700) | #1 | 63394
[Avatar]
phstiger
Member

[Minus]    0    [Plus]
Joined: 23/01/2007 17:47:26
Messages: 261
Offline
[Profile] [PM]
Bác nào biết phương pháp mã hóa MD5 giúp với. TỪng bước để mã hóa đó.? Đang cần gấp.Cảm ơn.
Luôn tiện cho hỏi cách phân biệt mã hóa 1 chiều và mã hóa 2 chiều.
Có phải mã hóa 1 chiều là: 1 string nhập vào thì trong CSDL chỉ lưu giữ giá trị băm của nó thôi. Khi ta login vào thì tương ứng với 1 string nào đó,thì string đó sẽ băm ra và so khớp với giá trị băm trên sever không vậy ?
[Up] [Print Copy]
  [Question]   Mã hóa MD5 06/06/2007 12:30:23 (+0700) | #2 | 63403
[Avatar]
canh_nguyen
Elite Member

[Minus]    0    [Plus]
Joined: 23/08/2004 18:55:09
Messages: 775
Location: Broken dream
Offline
[Profile] [PM] [WWW] [Yahoo!] [MSN] [ICQ]

phstiger wrote:
Bác nào biết phương pháp mã hóa MD5 giúp với. TỪng bước để mã hóa đó.? Đang cần gấp.Cảm ơn.
Luôn tiện cho hỏi cách phân biệt mã hóa 1 chiều và mã hóa 2 chiều.
Có phải mã hóa 1 chiều là: 1 string nhập vào thì trong CSDL chỉ lưu giữ giá trị băm của nó thôi. Khi ta login vào thì tương ứng với 1 string nào đó,thì string đó sẽ băm ra và so khớp với giá trị băm trên sever không vậy ?
 


Tham khảo http://en.wikipedia.org/wiki/MD5
[Up] [Print Copy]
  [Question]   Mã hóa MD5 06/06/2007 14:57:14 (+0700) | #3 | 63411
FaL
Moderator

Joined: 14/04/2006 09:31:18
Messages: 1232
Offline
[Profile] [PM]

phstiger wrote:
Bác nào biết phương pháp mã hóa MD5 giúp với. TỪng bước để mã hóa đó.? Đang cần gấp.Cảm ơn.
 

Hi, bạn có thể tham khảo đường link của canh_nguyen đã đưa, hoặc có thể đọc qua bài này ở http://reaonline.net/forum/showthread.php?t=391
Hay và bổ ích!

phstiger wrote:

Luôn tiện cho hỏi cách phân biệt mã hóa 1 chiều và mã hóa 2 chiều.
 


Ý bạn có phải là mã hóa đối xứng và bất đối xứng? Tớ chưa nghe thuật ngữ mã hóa 2 chiều bao giờ cả. Nếu là đối xứng và bất đối xứng thì phân biệt với nhau bởi chìa khóa giải mã.

Đối xứng: Khóa và chìa khóa giải mã là 1, nghĩa là quá trình mã hóa dữ liệu (encrypt) và quá trình (Decrypt) sử dụng chung một bộ mã hóa.

Bất đối xứng: Khi khóa và chìa khóa giải mã khác nhau.

phstiger wrote:

Có phải mã hóa 1 chiều là: 1 string nhập vào thì trong CSDL chỉ lưu giữ giá trị băm của nó thôi. Khi ta login vào thì tương ứng với 1 string nào đó,thì string đó sẽ băm ra và so khớp với giá trị băm trên sever không vậy ?
 


Điều này tớ không dám chắc. Nhưng có thể suy luận thế này smilie)

Decrypt hash code của MD5 dường như là điều không thể (Tại sao? smilie)) bởi vậy nếu CSDL chỉ lưu hash thì mỗi lần cần so sánh nó lại phải decrypt ... tốn rất nhiều thời gian. => Nó lưu plaintext.

Còn trong trường hợp CSDL được show ở những trình duyệt như phpmyadmin chẳng hạn, password được show dưới dạng hash để tránh trường hợp: 1 cái nhìn thoáng qua cũng có thể biết được password smilie)

Thuật toán mã hóa MD5 tớ cũng đang tìm. Vừa xem vài trang, chỉ có code của chính chương trình chứ chưa tìm ra thuật toán chung cụ thể. Mà những code đó viết trên 1 số ngôn ngữ tớ chưa biết hoặc ko làm việc: ASM, Delphi,... Có thời gian sẽ nghiên cứu sau vậy. (ở trang Wikipedia thuật toán "có vẻ" như được viết trên Delphi)

Thân.

Hãy giữ một trái tim nóng và một cái đầu lạnh
[Up] [Print Copy]
  [Question]   Mã hóa MD5 06/06/2007 21:07:08 (+0700) | #4 | 63427
[Avatar]
phstiger
Member

[Minus]    0    [Plus]
Joined: 23/01/2007 17:47:26
Messages: 261
Offline
[Profile] [PM]
Cảm ơn các Bác nhiều nhưng site: http://en.wikipedia.org/wiki/MD5 chỉ nói về MD5 căn bản và đưa ra code thôi, còn site http://reaonline.net/forum/showthread.php?t=391 cũng tương tự không nói rõ từng bước để biến string thành giá trị băm . Thứ mình muốn là input: string và các quá trình ví dụ như padding để biến string thành giá trị băm cơ.
[Up] [Print Copy]
  [Question]   Mã hóa MD5 06/06/2007 21:51:08 (+0700) | #5 | 63431
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

phstiger wrote:
Cảm ơn các Bác nhiều nhưng site: http://en.wikipedia.org/wiki/MD5 chỉ nói về MD5 căn bản và đưa ra code thôi, còn site http://reaonline.net/forum/showthread.php?t=391 cũng tương tự không nói rõ từng bước để biến string thành giá trị băm . Thứ mình muốn là input: string và các quá trình ví dụ như padding để biến string thành giá trị băm cơ. 


Có lẽ bồ nên tham khảo RFC: http://www.faqs.org/rfcs/rfc1321 . Chú trọng 5 bước (step 1 - step 5) trong RFC này để nắm nguyên tắc append padding, append length và quá trình xử lý thông điệp.

và xem thêm nguồn ứng dụng md5 trên Javascript của Paul Johnston http://pajhome.org.uk/crypt/md5/md5src.html để dễ hình dung.

Tớ thấy cụm từ "mã hóa" theo tiếng Việt không đúng tinh thần "message-digest" theo tiếng Anh. Không biết tiếng Việt có từ nào khác thay vì "mã hóa" không nhỉ?
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Mã hóa MD5 07/06/2007 02:54:05 (+0700) | #6 | 63455
[Avatar]
phstiger
Member

[Minus]    0    [Plus]
Joined: 23/01/2007 17:47:26
Messages: 261
Offline
[Profile] [PM]
Cảm ơn Bác. Mình đã tìm được link rồi. Bài viết dịch từ http://www.faqs.org/rfcs/rfc1321 (tiếng anh) sang tiếng việt. http://www.itechpro.com.vn/index.php?option=com_content&task=view&id=65&Itemid=88
[Up] [Print Copy]
  [Question]   Mã hóa MD5 07/06/2007 23:58:08 (+0700) | #7 | 63580
[Avatar]
phstiger
Member

[Minus]    0    [Plus]
Joined: 23/01/2007 17:47:26
Messages: 261
Offline
[Profile] [PM]
Hic mặc dù có bài viết tiếng việt nhưng đọc vẫn mủ tịt, cứ rối ung lên hết à. Liệu có ai có 1 ví dụ cụ thể 1 string nào đó và phân tích từng bước ra không vậy....
[Up] [Print Copy]
  [Question]   Mã hóa MD5 08/06/2007 00:03:08 (+0700) | #8 | 63583
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

phstiger wrote:
Hic mặc dù có bài viết tiếng việt nhưng đọc vẫn mủ tịt, cứ rối ung lên hết à. Liệu có ai có 1 ví dụ cụ thể 1 string nào đó và phân tích từng bước ra không vậy.... 


Rối chỗ nào? Bồ tìm hiểu chủ đề này cho mục đích nào vậy?
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Mã hóa MD5 08/06/2007 01:27:45 (+0700) | #9 | 63613
FaL
Moderator

Joined: 14/04/2006 09:31:18
Messages: 1232
Offline
[Profile] [PM]
Ví dụ cụ thể đây:

"a" -> 0cc175b9c0f1b6a831c399e269772661

Còn muốn xem từng bước thì cố gắng xem code của file kèm theo vậy!

Have fun! smilie)
Hãy giữ một trái tim nóng và một cái đầu lạnh
[Up] [Print Copy]
  [Question]   Mã hóa MD5 08/06/2007 11:32:56 (+0700) | #10 | 63716
[Avatar]
phstiger
Member

[Minus]    0    [Plus]
Joined: 23/01/2007 17:47:26
Messages: 261
Offline
[Profile] [PM]
Số là mình đang làm bài báo cáo nộp cho Thầy về hash nhưng mình đã nghe nói về MD5 từ lâu rồi nhưng chưa có dịp nghiên cứu. Giờ mới có dịp.
Mình không rõ ở chỗ Bước 4: Xử lý thông điệp theo từng khối 16 word
Mỉnh cơ bản đã hiểu và làm qua các Bước 1,2,3.
Sau đây là bài ví dụ của mình qua 3 bước nhưng không biết có đúng không. Đến Bước 4 thì không biết "nó" làm thế nào nữa --> không diễn tả đựoc tiếp các bước chạy.





1. Các bit gắn thêm
Chúng ta bắt đầu bằng cách giả sử chúng ta có một tín hiệu input có chiều dài b-bit, và chúng ta muốn tìm tín hiệu md của nó . Ở đây b là một số nguyên ko dấu bất kỳ (như đã nói ở trên). Chúng ta hình dung các bits của tín hiệu input được viết như dưới sau:
m_0 m_1 … m_[b-1]
Giả sử tín hiệu input là chuổi string : "tiger"
Chúng được biểu thị bằng số hexa như sau:
Ký tự t i g e r
Hex 74 69 67 65 72
Chúng ta đều biết rằng mỗi ký tự hex = 4 bit nên
' tiger= 74 69 67 65 72 (10 charHex = 10*4 bit=40 bit)
Sau khi có được số bit của string ta sẽ tiến hành quá trình padding
-Một tín hiệu được mở rộng sao cho chiều dài của nó có dạng ( p*512+ 448 ) bits ; p trong biểu thức trên là số nguyên > hoặc =0) tức là ta thêm bit vào phía sau sao cho độ dài (tính theo bit) phải đồng dư với 448 theo modun 512.
Tức là với chuỗi "tiger" như trên ta có (p*512 + 488) này vì:
- p=0 do tín hiệu chuỗi của ta chỉ có 40 bit nên p=0 trong trường hợp ( thường thì p=0 do chuỗi nhập vào không quá 64 ký tự char)
- 488 có được là do tín hiệu là 40 bit muốn đồng dư với 448 theo biểu thức (0*512+ d ) thì d = 448+40=488
Tóm lại là để mở rộng tín hiệu chuỗi 40 bit trên ta cần padding thêm 488-40=448 bit nữa. Ta bắt đầu set các bit padding , ta sẽ set bit đầu tiên bằng 1 và các bits sau đó = 0. Chú ý số hex đầu tiên được padding có dạng bit như sau :
1000 (dạng bit)(1-charHex=4bit, bit đầu =1, 3 bit sau =0).
Vậy 1000=1*23+0*22+0*21+0*20= 8 Hex
Các số hex sau có dạng : 00
Vậy cuối cùng ta viết lại chuỗi đã padded như sau:
74 69 67 65 72 80 00 00 . . . . . 00 00 (tổng cộng có 488 bit=112 charHex)
448 bit đã padded.
2. Gắn thêm độ dài
Theo như ở bước 1 thì b là chiều dài input của chuỗi nhập vào. Ta cần đổi b ra dạng 64 bit. Và 64 bit này được sử dụng thêm vào sau cùng chuổi đã padding ở bước 1. Trong trường hợp b lớn hơn 264 thì chỉ lấy 64-bit low-order thêm vào.
Ta cần nhắc lại hiện giờ chuỗi của ta là:
74 69 67 65 72 80 00 00 . . . . . 00 00 (40bit +448 bit = 488 bit)
Vì chuỗi ban đầu là "tiger" có chiều dài chuỗi là 5 ký tự tức là b=5 nên chiều dài bit theo chuỗi là 5*8=40. Đổi sang số hex là28. Viết lại theo 2 word (64 bit) là:
00 00 00 28
Tại thời điểm này , chuổi đã padding có dạng (p*512+448+64) bit =(p*512+512) bit = 512*(p+1) bits. Vậy chiều dài bit của chuổi là một bội số của 512 bits
Vậy thêm 2 word trên vào cuối chuỗi padding ở bước 1. Ta có số hex :
74 69 67 65 72 80 00 00 . . . . . 00 00 00 00 00 28
40 bit 448 bit 64 bit
3. Khởi tạo bộ đệm MD
Một bộ đệm 4 word (A,B,C,D) được dùng để tính mã số thông điệp. Ở đây mỗi A,B,C,D là một thanh ghi 32 bit. Những thanh ghi này được khởi tạo theo những giá trị hex sau ( các byte thấp trước ) :

word A : 01 23 45 67
word B : 89 ab cd ef
word C : fe dc ba 98
word D : 76 54 32 10

4. Xử lý thông điệp theo từng khối 16 word
Ta cần định nghĩa các hàm phụ. Hàm này nhận đầu vào là 3 word 32 bit và tạo ra một word 32 bit.

F(X,Y,Z) = XY v not(X) Z
G(X,Y,Z)= XZ v Y not(Z)
H(X,Y,Z) = X xor Y xor Z
I(X,Y,Z) = Y xor (X v not(Z))



TỚI ĐÂY CHẲNG BIẾT THẾ NÀO NỮA. MONG CHỈ GIÁO

[Up] [Print Copy]
  [Question]   Mã hóa MD5 08/06/2007 11:42:05 (+0700) | #11 | 63719
[Avatar]
phstiger
Member

[Minus]    0    [Plus]
Joined: 23/01/2007 17:47:26
Messages: 261
Offline
[Profile] [PM]

FaL wrote:
Ví dụ cụ thể đây:

"a" -> 0cc175b9c0f1b6a831c399e269772661

Còn muốn xem từng bước thì cố gắng xem code của file kèm theo vậy!

Have fun! smilie


Cám ơn Bác nhưng ý mình muốn là input 1 string và chạy tay để ra kết quả, chứ sử dụng soft thì không còn jì để nói vì mình đang tìm hiểu cách hoạt động của nó mà.
[Up] [Print Copy]
  [Question]   Mã hóa MD5 08/06/2007 14:41:30 (+0700) | #12 | 63737
FaL
Moderator

Joined: 14/04/2006 09:31:18
Messages: 1232
Offline
[Profile] [PM]
Bồ đang nói soft nào vậy?

Tớ upload source code của C đó chứ. Có soft nào đâu? Cái này là chạy tay đó.

Còn các bước cụ thể thì tớ cũng đang muốn tìm hiểu. Nhưng thi cử lùng bùng nên chưa xem được gì cả smilie)

Bữa nào đó sẽ xem kỹ các bước của bồ!

Thân.
Hãy giữ một trái tim nóng và một cái đầu lạnh
[Up] [Print Copy]
  [Question]   Re: Mã hóa MD5 09/06/2007 08:15:36 (+0700) | #13 | 63872
[Avatar]
phstiger
Member

[Minus]    0    [Plus]
Joined: 23/01/2007 17:47:26
Messages: 261
Offline
[Profile] [PM]
Thực ra thì xem code thôi thì cũng khó hiểu lắm bạn à. Nếu dễ hiểu thì mình đâu có post bài lên đây nhờ mọi người giúp đỡ đúng không nè! smilie)
[Up] [Print Copy]
  [Question]   Mã hóa MD5 09/06/2007 13:05:39 (+0700) | #14 | 63914
[Avatar]
kienmanowar
HVA Friend

Joined: 13/07/2004 05:57:34
Messages: 483
Offline
[Profile] [PM] [WWW]

phstiger wrote:
Số là mình đang làm bài báo cáo nộp cho Thầy về hash nhưng mình đã nghe nói về MD5 từ lâu rồi nhưng chưa có dịp nghiên cứu. Giờ mới có dịp.
 


Tôi thiết nghĩ bạn đừng nên quá xa đà vào thuật toán của nó, cái này sẽ khiến bạn càng tìm hiểu càng trờ nên rối rắm. Nếu như bạn làm báo cáo về Hash cho thầy thì sao không làm báo cáo về "ứng dụng của hash", đơn cử như : Bảo vệ password của người dùng, Bảo vệ software, Kiểm tra tính toàn vẹn, Ứng dụng trong chữ kí điện tử. Chỉ bấy nhiêu đó thôi cũng đủ cho một bài báo cảo của bạn.

Regards
kienmanowar
[Up] [Print Copy]
  [Question]   Mã hóa MD5 09/06/2007 23:57:37 (+0700) | #15 | 63951
[Avatar]
phstiger
Member

[Minus]    0    [Plus]
Joined: 23/01/2007 17:47:26
Messages: 261
Offline
[Profile] [PM]
Mình nghĩ chắc đành phải như vậy thôi, biết sao được. Có lẽ bước 4 mình sẽ ghi ngắn gọn tham khảo tại site .... và có kết quả ở bước 5. Cảm ơn đã đóng góp ý kiến.
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|