; Find 2 primes from length of their product and textually supplied entropy. (let ((pias (fileVal "pias"))(Do ((fileVal "Do") 'Do))) (lambda (n seed) (let ((state ((fileVal "RC4") seed))) (let ((nb (state 'sb))) (Do 768 (lambda (i) (nb)))) (let ((G (lambda (st sz) (let ((B (+ 1 ((state 'nb) 2)))) (let rec ((A (+ st (((state 'rbi) sz))))) (let ((cp (pias A B))) (if (number? cp) cp (rec (+ 1 A))))))))) (let* ((lim (expt 2 (floor (/ n 2)))) (p (G (floor (* 2/3 lim)) lim)) (q (let ((P (floor (/ (* lim lim) (* 2 p))))) (G P P)))) (map (lambda (t) (number->string t 16)) (list (* p q) p q))))))) ; Tests and Demo; ((fileVal "chRSAb") 1024 "5wwf5") => e14a5ab708f8edd259798b074025a81db4b05d99ce2f6ff7c0a42ec95691c5916010141786c4065b2cfac0972b68960748550188ac0a7de9a3313718e48ff13486ce2f461b44ce03de46fdbacb7ef0c6e1b1286a07d812122ef3a94eeac11e581267a1a3cc1f4c09adff81b453ab96a96f6b8647270685792115038dd22f927b eba46a791082bf7f19644fab196e5708e40ada12bf79ce10237caa89814da815c8c9e408ebdfddbf4d668a43b78d2da191dc07fb0fb792339d7a8835892036f3 f4c0fe214edfc8899665035ec41dc5c12e8eaac2119eb813cff141270a8d8fc0940a89eae50b3619c973e67ba62cd8018933324fc4ab38d3f7df1b50db9fa859