Cứu giúp! Tôi vừa đăng nhập vào Stack Exchange, nhưng tôi quên mật khẩu của mình là gì! Tôi cần một cách để giải quyết nó trước khi tôi đăng xuất.
May mắn thay, tôi là một hacker xuất sắc. Tôi không chỉ có thể tìm thấy hàm băm của mật khẩu mà còn tìm thấy thuật toán băm của Stack Exchange! Nó lấy giá trị ASCII của mỗi chữ số nhân với vị trí của chữ số đó, sau đó tổng hợp tất cả các giá trị đó lại với nhau. Ví dụ:
"135" -> 1*49 + 2*51 + 3*53 = 310
Tôi nhớ rằng mật khẩu của tôi dài 3 chữ số và mỗi ký tự là một số nằm trong khoảng từ 0 đến 5 (như vậy nó sẽ khớp với biểu thức chính quy ^[0-5]{3}$
:), nhưng vẫn còn quá nhiều khả năng để đoán. Tôi cần một chương trình có thể chuyển đổi một hàm băm trở lại thành mật khẩu tiềm năng, nhưng mặc dù là một hacker chuyên nghiệp, tôi không thể mã hóa để cứu mạng tôi! Tôi đã có thể viết các bài kiểm tra này bằng tay:
input -> output
288 -> 000 // lowest possible hash
290 -> 200, 010
298 -> 022, 050, 103, 131, 212, 240, 321, 402, 430, 511
318 -> 555 // highest possible hash
Một trong số các bạn có thể viết một chương trình cho tôi để lấy một hàm băm và in tất cả các mật khẩu có thể tôi đã sử dụng không?
Đầu vào sẽ luôn có thể tạo ra ít nhất một mật khẩu hợp lệ. Bất kỳ định dạng đầu ra đều được cho phép, miễn là các chuỗi có thể được xác định rõ ràng. Tôi cũng không quan tâm đến các số 0 hàng đầu, vì vậy nếu mật khẩu tiềm năng là 001
, tôi cũng sẽ chấp nhận 01
hoặc 1
.
Xin hãy giúp tôi khỏi bị khóa khỏi Stack Exchange!
Chấm điểm
Đây là môn đánh gôn , vì vậy câu trả lời ngắn nhất trong mỗi ngôn ngữ sẽ thắng!
"135" -> 1*49 + 2*51 + 3*53 = 310
54
tôi có thể tìm ra các số 0 ở phía trước.
1
là giá trị Ascii49
thay vì48
?