2011-10-17 32 views
5

Tôi cần một thuật toán (bất kỳ ngôn ngữ lập trình nào) để kiểm tra sức sống bằng thuật toán leo đồi để phá vỡ mật mã cho thử thách mã hóa. Thuật toán nên kiểm tra khả năng giải mã ngẫu nhiên (không có khoảng trống) là văn bản tiếng Anh (cũng cho điểm cho các từ chưa hoàn chỉnh!) Hoặc chỉ là một chuỗi ký tự ngẫu nhiên.Phát hiện ngôn ngữ Brute-Force

Tôi đã thử với một số thuật toán tôi đã phát triển nhưng chúng không tốt lắm.

Nghiên cứu của tôi:

Một dự án crypto bí ẩn M4 (http://www.bytereef.org/m4_project.html) sử dụng số liệu thống kê Sinkov, mà tôi muốn sử dụng, quá.

Điều duy nhất tôi tìm thấy là tài liệu «quebra -pedra», một khung công tác Java bao gồm phân tích trọng lượng log của Sinkov mà tôi đang tìm kiếm.

http://www.google.com/m?client=ms-android-samsung&source=android-home#q=Quebra-pedra+framework+java

Nhưng tôi không tìm thấy nơi tải xuống khung. Ngoài ra tôi đã không tìm thấy bất kỳ thực hiện hoặc mô tả của các thử nghiệm Sinkov.

Tôi rất vui vì bất kỳ gợi ý nào. Cảm ơn.

Trả lời

5

Tôi không biết về số liệu thống kê của Sinkov, nhưng các mô hình ngôn ngữ từ xử lý ngôn ngữ tự nhiên có thể thực hiện chính xác những gì bạn muốn, ghi văn bản theo cách tương tự như tiếng Anh.

Tôi đã viết một ký tự đại diện đơn giản ở đây, cần phải tuân theo một cách hợp lý.

https://github.com/rrenaud/Gibberish-Detector

+0

Cảm ơn nhận xét của bạn. Tôi không biết chuỗi Markov, nhưng tôi cũng có ý tưởng tương tự về tính toán điểm số cho các bigram. Vấn đề tôi có với công thức riêng của mình là khoảng cách giữa văn bản thực và rác thải rất nhỏ. Tôi sẽ xem mã của bạn để tìm hiểu thêm về chuỗi Markov. –

+0

Đồng nghiệp của tôi đã dịch dự án của rrenaud sang Java, trong trường hợp điều này hữu ích đối với bất kỳ ai https://github.com/paypal/Gibberish-Detector-Java – Eyal

Các vấn đề liên quan