Tôi có một (thực sự là một băm SHA1) lớn và số nguyên "độc đáo".Tạo một cụm từ giả tự nhiên từ một số nguyên lớn một cách đảo ngược
Lưu ý: Trong khi tôi đang nói ở đây về băm SHA1, đây là không một câu hỏi mật mã/bảo mật! Tôi là không phải đang cố gắng phá vỡ SHA1. Hãy tưởng tượng một số nguyên ngẫu nhiên 160 bit thay vì SHA1 nếu điều đó sẽ giúp ích.
Tôi muốn (không có lý do nào khác ngoài việc vui chơi) để tìm một thuật toán để lập bản đồ mà SHA1 băm để một (pseudo-) cụm từ tiếng Anh máy tính tạo ra. Việc lập bản đồ phải là hai chiều (tức là, khi biết thuật toán, người ta phải có khả năng tính toán băm SHA1 ban đầu từ cụm từ đó.)
Cụm từ này không có ý nghĩa. Tôi thậm chí sẽ giải quyết cho toàn bộ một đoạn vô nghĩa. (Mặc dù chất lượng - Anh quốc - trong một đoạn văn có lẽ nên được tốt hơn so với một cụm từ chỉ.)
Một thuật toán tốt hơn sẽ tạo ra ngắn hơn, nhiều hơn trông tự nhiên, cụm từ độc đáo hơn.
Một biến thể: nó là OK nếu tôi sẽ có thể chỉ làm việc với một phần của băm. Nói, sáu chữ số hex đầu tiên là tốt.
Việc sử dụng có thể có của các cụm từ được tạo ra: phiên bản có thể đọc được con người của Git cam ID, để sử dụng như một phương châm cho một phiên bản chương trình nhất định, được xây dựng từ đó cam kết. (Như tôi đã nói, đây là "cho vui". Tôi không tuyên bố rằng điều này là rất thiết thực - hoặc dễ đọc hơn bản thân SHA1.)
Cách tiếp cận có thể có: Trong quá khứ tôi đã cố gắng xây dựng một bảng xác suất (của từ), và tạo ra các cụm từ như chuỗi Markov, gieo hạt máy phát điện (lấy cành từ cây xác suất), theo các bit tôi đọc từ SHA. Điều này không thành công lắm, các cụm từ kết quả quá dài và xấu xí. Tôi không chắc liệu đây có phải là lỗi hay không, hay lỗ hổng chung trong thuật toán, vì tôi phải từ bỏ nó đủ sớm.
Bây giờ tôi đang suy nghĩ về cố gắng để giải quyết vấn đề một lần nữa. Bất kỳ lời khuyên nào về cách tiếp cận điều này? Bạn có nghĩ phương pháp tiếp cận chuỗi Markov có thể hoạt động ở đây không? Thứ gì khác?
Tôi thực sự không biết gì về mật mã. Vì vậy, tôi chỉ muốn chắc chắn rằng tôi hiểu được câu hỏi. Bạn về cơ bản muốn mã hóa một số nguyên lớn thành một câu duy nhất, để nó có vẻ tự nhiên nhất có thể? – yurib
@yurib: vâng, về cơ bản là nó. –
@yurib: ngoại trừ việc tôi cũng muốn có thể chuyển đổi câu này trở lại số nguyên đó sau đó. –