CARVIEW |
Select Language
HTTP/2 200
date: Sun, 12 Oct 2025 03:45:02 GMT
content-type: text/html; charset=UTF-8
server: cloudflare
x-frame-options: DENY
x-content-type-options: nosniff
x-xss-protection: 1;mode=block
vary: accept-encoding
cf-cache-status: DYNAMIC
content-encoding: gzip
set-cookie: _csrf-frontend=0aa9c2761db829dd78fcda57f0c4c06c407cc8e8c4015ba0cbb48429f5cc3e11a%3A2%3A%7Bi%3A0%3Bs%3A14%3A%22_csrf-frontend%22%3Bi%3A1%3Bs%3A32%3A%223hJyrfacx9BSgY0iCKJkNI4sVGT1W4uk%22%3B%7D; HttpOnly; Path=/
cf-ray: 98d39a25185f343c-BLR
(ns lab4.core)(defn divides? "Проверка делимости числа нацело" [k n] - Pastebin.com
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (ns lab4.core)
- (defn divides?
- "Проверка делимости числа нацело"
- [k n]
- (zero? (mod k n)))
- (defn prime?
- "Проверка числа на простоту"
- [x]
- (or (= 2 x)
- (= 3 x)
- (and (< 1 x)
- (odd? x)
- (not-any? (partial divides? x)
- (range 3 (inc (Math/sqrt x)) 2)))))
- (defn mod-expt
- "Возведение в степень по модулю"
- [base, n, modulus]
- (loop [c 1
- inx-n 0]
- (if (= n inx-n)
- c
- (recur (mod (* c base) modulus)
- (inc inx-n)))))
- (defn gcd
- "Алгоритм Евклида для нахождения НОД"
- [a b]
- (if (zero? b) a (recur b (mod a b))))
- (defn ext-gcd
- "Расширенный алгоритм Евклида. Возвращает
- x и y уравнения a*x + b*y = gcd(a b)"
- [a b]
- (let [a (Math/abs a)
- b (Math/abs b)]
- (cond
- (zero? a) {:gcd b, :x 0, :y 1}
- (zero? b) {:gcd a, :x 1, :y 0}
- :else (loop [x 0, x0 1
- y 1, y0 0
- r b, r0 a]
- (if (zero? r)
- {:gcd r0, :x x0, :y y0}
- (let [q (quot r0 r)]
- (recur (- x0 (* q x)) x
- (- y0 (* q y)) y
- (- r0 (* q r)) r)))))))
- (defn m*
- "Вычисляет (p*q) mod m"
- [p q m]
- (mod (* p q) m))
- (defn mod-inv-euclid
- "Вычисляет обратное число по модулю,
- используя расширенный алгоритм Евклида"
- [a m]
- (:x (ext-gcd a m)))
- (defn solve-linear-congruence [mod-inv a b m]
- "Решает уравнение типа a*x = b(mod m).
- Возвращает список возможных решений"
- (let [d (gcd a m)]
- (when (zero? (mod b d))
- (let [m1 (/ m d)
- a1 (/ a d)
- b1 (/ b d)
- x0 (m* b1 (mod-inv a1 m1) m1)]
- (map #(+ x0 (* m1 %))
- (range d))))))
- (defn encode->send->decode [p m]
- "Выполняет процедуру подписи сообщения и
- проверяет ее. Принимает простое число и хэш сообщения"
- (println "Next example: ")
- (let [X (rand-nth (range 2 p))
- G (rand-nth (range 2 p))
- Y (mod-expt G X p)
- K (rand-nth (filter #(= 1 (gcd % (dec p))) (range 2 p)))
- a (mod-expt G K p)
- arg (mod (- m (* a X)) (dec p))
- b (first (solve-linear-congruence mod-inv-euclid K arg (dec p)))
- to-send {:a a, :b b, :m m}
- check-num1 (mod (* (mod-expt Y a p) (mod-expt a b p)) p)
- check-num2 (* (mod-expt G m p))]
- (do
- (println "X: " X)
- (println "G: " G)
- (println "Y: " Y)
- (println "K: " K)
- (println "a: " a)
- (println "b: " b)
- (println "to-send: " to-send)
- (println "check-num1" check-num1)
- (println "check-num2" check-num2))))
- (def p 196033)
- (def messages [151 6329 17 4326 548 124]) ;;Cписок хэшей сообщений
- (map ;; Применяет главную функцию к каждому из хэшей сообщений
- (partial encode->send->decode p)
- messages)
Advertisement
Add Comment
Please, Sign In to add comment
-
⭐⭐⭐MAKE $500 IN 15 MIN⭐⭐
Java | 3 sec ago | 0.10 KB
-
⭐⭐⭐Instant Profit Method⭐⭐
Java | 28 sec ago | 0.10 KB
-
⭐⭐⭐Make $15OO in 2O minutesV G⭐⭐
Java | 39 sec ago | 0.10 KB
-
⭐✅ Exploit 2500$ in 15 Minutes⭐⭐⭐ G
JavaScript | 48 sec ago | 0.25 KB
-
⭐⭐⭐Crypto Accounts⭐⭐
Java | 50 sec ago | 0.10 KB
-
Free Crypto Method (NEVER SEEN BEFORE)⭐⭐ X
JavaScript | 57 sec ago | 0.25 KB
-
⭐⭐⭐Make $1500 in 20 minutes⭐⭐
Java | 1 min ago | 0.10 KB
-
⭐✅ Swapzone Glitch ✅ Working ⭐⭐ X
JavaScript | 1 min ago | 0.25 KB
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand