Tôi đã thiết kế một trình tạo ngẫu nhiên đơn giản, quay vòng hai số một cách hỗn loạn bằng phương pháp nhân và mô đun. Nó hoạt động tuyệt vời cho điều đó.
Nếu tôi sử dụng nó như một trình tạo mật mã, tuy nhiên nó sẽ dễ bị tấn công bằng văn bản đã biết, do kẻ tấn công có thể đảo ngược hạt giống từ một loạt các số ngẫu nhiên theo cách tính toán hiệu quả.
Để chứng minh mật mã bị hỏng, hãy tìm một cặp giá trị hạt hợp pháp tạo 7 số 0 liên tiếp trong phạm vi [0; 255], sử dụng càng ít năng lượng, thời gian CPU, v.v. càng tốt.
Đây là trình tạo ngẫu nhiên được viết bằng JavaScript:
function seed(state1,state2){
//Constants
var mod1=4294967087
var mul1=65539
var mod2=4294965887
var mul2=65537
function random(limit){
//Cycle each state variable 1 step
state1=(state1*mul1)%mod1
state2=(state2*mul2)%mod2
//Return a random variable
return (state1+state2)%limit
}
//Return the random function
return random
}
//Initiate the random generator using 2 integer values,
//they must be in the ranges [1;4294967086] and [1;4294965886]
random=seed(31337,42)
//Write 7 random values in the range [0;255] to screen
for(a=0;a<7;a++){
document.write(random(256)+"<br>")
}
Tôi đã làm một công cụ để kiểm tra các cặp số ứng cử viên, nó có thể được tìm thấy ở đây .
Trong 3 ngày tiếp theo, không cho phép các spoiler , một câu trả lời chỉ chứa một bộ số và tất nhiên nó phải là một bộ khác với các bộ được đăng bởi người giải trước. Sau đó, bạn được khuyến khích đăng mã và giải thích cách tiếp cận của bạn.
Chỉnh sửa, kiểm dịch đã kết thúc:
Câu trả lời phải chứa cả một bộ số và giải thích và mã duy nhất để ghi lại phương pháp giải.
Giải pháp thanh lịch nhất chiến thắng.
Đối với hồ sơ:
Viết một chương trình có thể tìm ra giải pháp nhanh chóng là thanh lịch.
Làm cho một chương trình sử dụng các tính năng của GPU một cách hiệu quả để làm điều đó nhanh hơn là điều tuyệt vời.
Làm công việc trên một phần của "bảo tàng" là thanh lịch.
Tìm một phương pháp giải pháp khả thi có thể được sử dụng chỉ bằng bút và giấy là rất thanh lịch.
Giải thích giải pháp của bạn một cách hướng dẫn và dễ hiểu là thanh lịch.
Sử dụng nhiều máy tính hoặc rất đắt tiền là không phù hợp.