Nào, mọi người lại cùng thử xem ai là Sherlock của HAO.

cái này dựa theo bảng số điện thoại di động
(cái này khó tại vì phải đoán nữa tai 1 số tượng trưng cho 3 chữ)


2482 6864 7464 6428 824.2482 824 5866 984 93 427 64438 629 626 8726 6427 68 2864."824 22 36"
chúc mừng sinh nhật ... .chúc ... luôn ... .. ... nhiều mày ... .... nhap .. buoi . "tai ca do"

có những cái em không đoán ra mọi người làm nốt hộ(em nghĩ là người trong cuộc mới hiểu)
 
Chỉnh sửa lần cuối:
Cảm ơn em Quang nhớ :D thực ra dịch lại nhiều cái cũng không hiểu lắm do cũng chả phải là người trong cuộc :D Nhưng thấy nó cảm ơn rối rít , còn mình thì được dịp vênh mặt nên cũng sướng . Hế hế , nhờ công chú em cả .... :D :D :D
 
Vũ Hồng Quang đã viết:
cái này dựa theo bảng số điện thoại di động
(cái này khó tại vì phải đoán nữa tai 1 số tượng trưng cho 3 chữ)


2482 6864 7464 6428 824.2482 824 5866 984 93 427 64438 629 626 8726 6427 68 2864."824 22 36"
chúc mừng sinh nhật ... .chúc ... luôn ... .. ... nhiều mày ... .... nhap .. buoi . "tai ca do"

có những cái em không đoán ra mọi người làm nốt hộ(em nghĩ là người trong cuộc mới hiểu)

Đến là méo mặt.
Chúc mừng sinh nhật "Tai", Chúc "Tai" luôn zui zẻ, gặp nhiều may mắn, tràn ngập nụ cười. "Tài cá độ" :-?
 
Giai thu? cai nay` nha'
#@$#@%$#^%^#$%$#%$#%$#%$#%$%$# %#%$#$%$# ^&^%# @#$@#$@$#
%%^%#%$$# $@#@$#@, ^*^%%$
Bài này không quá dễ để làm trong 10 phút nhưng cũng không quá khó đến nỗi mấy ngày nghĩ không ra :D
 
tao thấy mấy ký tự này hay dùng để nói "F- Word" , hoặc là " S- word" :))
 
Ocdp fr y fqjqyhqhx ocvq fr whugxwx fm psk ettxml. Pda zcnmn fuuyn vuoyz lm pda exomxm uxahmx zxzc exomxm. Bkp zgjkrgtv, fe pda exomxm uxahmx fs fr y pisyh oczk fs qiqhx uvvivtlv kla gflzmzhg fm pda regyruvm. Elxujmyku, pda exomxm rdig zgtivtlv kla gflzmzhg ahklwux. Pda lxxhiw fuuyn uzshywm pda exomxm vuoyz lm pda gnhuxm le exomxm le zxzc rjoy. Fe pda rjoy dwq nblya dwnlwlk oczk yryns exomxm fm ocvq rjoy rdig yb tuuhuskuv nblya fekylygfi fm pda regyruvm. Wjh pda yfshuskuk wlz tuuhuskuk yhgehr y vbmvex fm pda regyruvm, qbcyb gywjm ubnyn “x” fr “y”. Ocdp rdig yb koepy tyxvyukdj ql mihpy. Cvsz bql.


Gợi ý: đoạn văn này được viết bằng tiếng Anh, ngữ pháp (tương đối) chuẩn, không có ký hiệu viết tắt nào bởi vì có vào thì thực sự là khó hơn là không có vì nó tạo giả thiết sai lầm cho người giải.

Mọi người cùng vào thử sức nào. Chỉ có cái là lần này đoạn này được mã hóa 2 lớp liền. Bản thân mã một lớp cũng đã khó giải rồi nên... Ai muốn giải tay thì mệt không kêu ai nhé, không trách là có người không báo trước. Mặt khác nếu có ai làm được bằng tay thì chắc là người thông minh nhất VN rồi, xin bạn liên hệ với tôi ngay tức khắc để chúng ta bàn chuyện tương lai lâu dài :D. Đoạn code này được đặc biệt thiết kế cho những người có đồ sành điệu để phân tích mã.
Lầny này thì mã tương đối khó nên gợi ý luôn sẵn sàng :D.

Ai thích thử sức làm tay thì vào link dưới, nguồn cùng là một đoạn văn như trên nhưng mới qua lớp mã hóa đầu tiên thôi. Tất nhiên là ai muốn dùng đoạn này để làm cơ sở giải đoạn trong đề bài thì cũng được.
http://members.lycos.co.uk/youngexplorer/code.txt
 
Chỉnh sửa lần cuối:
Mỗi 1 từ bác sử dụng Caesar cipher với 1 shift khác nhau. Sau khi tìm được mỗi từ shift bao nhiêu thì có thể sử dụng frequency analysis để giải được. Cái này nếu viết 1 chương trình thì có thể giải được dễ dàng (với 1 word list tiếng Anh) = cách brute force. Mà giải tay thì hơi khoai.
 
Chỉnh sửa lần cuối:
Anh không biết là nếu viết chương trình thì phải viết nào. Thú thực là anh không nghĩ ra một thuật toán nào có thể giải quyết được dù anh là người tạo ra bộ mã. Sự xuất hiện của từng ký tự phụ thuộc vào 2 yếu tố mà 2 yêu tố hoàn toàn độc lập với mỗi nhau trong mỗi từ khác nhau nên 2 từ khác nhau chút xíu thôi cũng cho kết quả nhìn hoàn toàn khác. Bài này anh thiết kế đặc biệt chống frequency analysis mà. Thích thì thử brute force, anh không tin là làm ra được. Nếu mà có cái nào brute force có hướng thì may ra giải được, chứ nếu mà chỉ brute force thì chịu :D. Anh chưâ thử brute force bao giờ, cứ thử đi, nãy giờ nói về brute force là nói đại :D. Code trong file text thì có lẽ brute force ra được.
 
Hình như cả 2 layer đều dùng 1 kiểu encryption đúng ko??
 
Không, 2 lớp dùng 2 yếu tố hoàn toàn độc lập với nhau của từng từ một trên bản gốc. Thế tức là mã hoá theo layer nào trước khi cộng lại cũng có kết quả như nhau. Mã hoá của layer thứ 2 là thay đổi trên các ký tự của kết quả layer thứ nhất nhưng thay đổi bao nhiêu, như thế nào là do tính chất của từ trong đoạn văn nguồn quy định.
Điều đó cũng có nghĩa là không layer nào có key cả, cấu trúc từ ra sao sẽ quyết định kết quả mã hoá, không phải là do yếu tố bên ngoài.

Nếu thích anh gửi mã nguồn C quy định cách mã hóa cho để tìm ra thuật toán giải quyết bởi vì bản thân anh cũng không nghĩ ra thuật toán nào hiệu quả cả. Tiện thể góp ý cho anh làm thế nào để improve chương trình :D, vẫn có chút xíu xíu bug.




Thêm một điểm nữa, nếu 2 từ không giống nhau 100% thì không có cách nào lại ra kết quả giống nhau cả. Điều này đảm bảo tính chất đối xứng 1:1 tuyệt đối của các từ(word) giữa bản gốc và kết quả sau khi mã hoá. Nói cách khác có 1 và chỉ 1 từ gốc tương ứng với 1 từ đã mã hoá và ngược lại có 1 và chỉ 1 từ đã mã hoá tương ứng với 1 từ gốc (vế 2 chắc là thừa, cứ nói cho ăn chắc :D). Tuy nhiên điều nói trên không thể áp dụng cho từng chữ cái một. Ngoài ra, những từ rất giống nhau như "how" và "cow" sẽ có nhiều điểm tương đồng. "Who" và "how" thì không, "lease" và "please" cũng không.
 
Chỉnh sửa lần cuối:
hehe cái code.txt giải tay có vẻ 0 khó lắm :)
 
Chỉnh sửa lần cuối:
Em thì nghĩ là cũng tương đối khó nhằn, em nghĩ là người giải phải đi qua tương đối nhiều giả thuyết mà vẫn không tới gần được giả thuyết đúng. Ngay cả co giả thuyết đúng rồi chăng nữa vẫn phải tốn một công không nhỏ (không quá lớn) về mặt suy nghĩ để kiểm chứng và giải ra một phần của đoạn văn.. Nếu mà dùng frequency analysis với tiện ích thay từ thì có thể dễ một chút nhưng nếu làm tay thì em nghĩ là khó. Bác làm thế nào thấy dễ thì chắc tại bác siêu chứ hông phải là tại nó dễ :D.
 
Cái này 1 phần cũng do may mắn, 1 phần thì dựa vào câu nói của Hiếu là dùng Caesars Cipher (CC). Cũng may là Tâm chỉ dùng các bảng CC khác nhau ở trong 1 từ cho nên 0 quá khó, lại chỉ có 2 bảng +1 và -1 nên càng dễ vì nhiều từ chỉ cần đoán và khi nhìn lướt để kiểm tra thấy từng chữ cái chỉ ở khoảng chung quanh 2 bảng kia, thế là đủ :)

Thứ tự mò của anh ban đầu là this, is, a, the, in, if, be, và have fun. Từ đó lập 2 bảng alphabet +1 và -1, khi giải thậm chí 0 cần phải để ý khi nào +1 còn khi nào -1. Làm mất khoảng gần 2 tiếng nhưng 0 tập trung lắm, trình anh cũng có hạn. Anh nghĩ mấy chú giỏi Toán + Tin mất khoảng trên dưới 1 tiếng là xong bài này.

Nếu bị code như Hiếu nói, mỗi từ shift 1 kiểu khác nhau, thì đúng là khó giải tay hơn nhiều :) Hoặc khi thêm cái layer2 vào cũng khó hơn hẳn.
 
Chỉnh sửa lần cuối:
Vâng, thì đúng là nhiều lúc chả phải để ý là lúc nào +1, lúc nào -1 nên làm frequency analysis mới dễ mà. Thực ra lúc em viết chương trình em cho một biến "n" vào để quy định mức độ chạy vòng quanh của từng chữ cái một nhưng sau em nghĩ là nếu làm thế xong cho người ta một con số, người ta lại tưởng là (a)n là key,(b) chỉ có 1 cách mã hóa cho tất cả các chữ thì người ta lạc hướng, thử đủ các thứ vào không xong, thế thì đánh đố nhau quá trong khi lớp 1 em định cho ai thích giải tay thì giải. Thế nên thôi, em để n=1 cho xong.

Thực ra em nghĩ là khó vì với một người không biết là em dùng gì để mã hoá, chắc là đầu tiên ai cũng thử ngay CC vào nhưng mà nó sẽ không ra kết quả như mong đợi nên mọi người sẽ chuyển hướng. Dù là giỏi Toán với Tin đi chăng nữa thì nếu không suy luận đúng hướng thì giải sẽ rất mất thời gian. Nếu không cương quyết theo hướng CC thì có lẽ còn chả bao giờ giải nổi với một số người

Thực ra Hiếu nói cũng không hẳn là sai, lớp mã thứ 2 của em là thế, mỗi từ một kiểu shift khác nhau nên sự phân bố của các từ không theo quy luật trong bảng alphabet nữa, chống được frequency analysis tương đối hiệu quả. Tuy nhiên nếu chỉ để riêng lớp thứ 2 thì vẫn có một cách tương đối dễ để giải ra nếu người giải học một chút xíu về mật mã. Em viết bài này đố thằng bạn em học Informatic ở bên Đức, thử xem nó có cách gì giải được lần này. Em thì không học chuyên ngành về mã hoá nên em không biết là người ta có những công cụ, thuật toán gì để phân tích và giải mã nữa.

Em thì em không tin là với 2 lớp mã lại có thể brute force ra được vì có thể brute force ra từng từ một nhưng ghép tất cả các từ với nhau thành một nhóm có nghĩa thì mất cực nhiều công. Hơn nữa, có 2 lớp mã hoá các chữ nên khó có một cách dễ dàng nào để biết được là 2 từ có giống nhau hay không, không thể tiết kiệm được một chút thông tin phân tích nào cả. Như anh thấy thì chữ "this" với chữ "is" qua 2 lần mã không thể nhận ra là chúng nó có chúng một nhóm ký tự cuối. Tất nhiên là các khả năng sắp đặt chữ cái là có hạn nhưng mà làm gần 500 ký tự, hoặc thậm chí là làm theo từ đi chăng nữa thì chắc năm 2100 mới ra.

Không hiểu có thuật toán nào giải ra một cách hiệu quả được nhỉ :-?.
 
1 word list tiếng Anh. Đã biết nó là CC rồi & các chữ cái trong cùng 1 từ đều chỉ dùng 1 shift duy nhất ---> cứ quay vòng từ 1 ---> 25. Khi nào được 1 từ có trong word list thì thay vào. Cái này độ chính xác sẽ tăng cao với số lượng từ có nhiều chữ cái tăng cao.
 
Ừ, nhưng cái đó chỉ là lớp thứ 2 thôi, đó là vì sao anh bảo chỉ có lớp thứ 2 thôi thì giải tay có thể hơi khó nhưng vẫn có cách tương đối dễ để giải ra mà. Cái anh chưa nghĩ ra là làm thế nào để qua được cả 2 lớp thôi, giải sử là biết cả 2 lớp đều dùng một dạng CC advance nào đó. Chứ còn nếu hoàn toàn không biết thì anh không thể tưởng tượng ra thuật toán nào hiệu quả cả.
 
Back
Bên trên