1
0
Fork 0
This commit is contained in:
Mike 2024-02-01 16:12:33 +02:00
parent 9afae4a4db
commit 70182f7167
3 changed files with 31 additions and 22 deletions

View file

@ -55,6 +55,7 @@
(% *By *Q) ) )
(de edwards (P Q)
(println 'ed 'P P 'Q Q)
(let
(X1 (car P)
Y1 (cdr P)

View file

@ -28,15 +28,6 @@ R 37095705934669439343138083508754565189542113879843219016388785533085940283556
(bit? 1 I)
(setq R (modulo (* R B) M)) ) )
R ) )
(de **Mod (X Y N)
(let M 1
(loop
(when (bit? 1 Y)
(setq M (% (* M X) N)) )
(T (=0 (setq Y (>> 1 Y)))
M )
(setq X (% (* X X) N)) ) ) )
(de expmod-NEW (B E M)
(if (=0 E)
1
@ -49,7 +40,7 @@ R 37095705934669439343138083508754565189542113879843219016388785533085940283556
R ) ) )
(println 'expmod-NEW)
(bench
(do 10000
(do 100
(test
37095705934669439343138083508754565189542113879843219016388785533085940283556
(expmod-NEW
@ -58,7 +49,7 @@ R 37095705934669439343138083508754565189542113879843219016388785533085940283556
57896044618658097711785492504343953926634992332820282019728792003956564819949 ) ) ) )
(println 'expmod-OLD)
(bench
(do 10000
(do 100
(test
37095705934669439343138083508754565189542113879843219016388785533085940283556
(expmod-NEW

View file

@ -13,6 +13,8 @@ E 36144925721603087658594284515452164870581325872720374094707712194495455132720
Q (38815646466658113194383306759739515082307681141926459231621296960732224964046 . 11903303657706407974989296177215005343713679411332034699907763981919547054807)
}#
(de inv (X)
(expmod X (- *Q 2) *Q) )
(de expmod (B E M)
(if (=0 E)
1
@ -23,10 +25,30 @@ Q (38815646466658113194383306759739515082307681141926459231621296960732224964046
(when (bit? 1 E)
(setq R (% (* R B) M)) )
R ) ) )
(de inv (X)
(expmod X (- *Q 2) *Q) )
(de xrecover (Y)
(let
(YY (* Y Y)
XX (* (dec YY) (inv (inc (* *D YY))))
X (expmod XX (/ (+ *Q 3) 8) *Q) )
(and
(n0 (% (- (* X X) XX) *Q))
(setq X (% (* *I X) *Q)) )
(and
(n0 (% X 2))
(setq X (- *Q X)) )
X ) )
(setq *S (0 -1 -2 -3 -4 -5 -6 -7 .))
(setq *B 256)
(setq *Q `(- (** 2 255) 19))
(setq *L `(+ (** 2 252) 27742317777372353535851937790883648493))
(setq *D `(* -121665 (inv 121666)))
(setq *I `(expmod 2 (/ (dec *Q) 4) *Q))
(setq *By `(* 4 (inv 5)))
(setq *Bxy
(cons
(% (xrecover *By) *Q)
(% *By *Q) ) )
(de edwards (P Q)
(println 'P P 'Q Q)
(let
(X1 (car P)
Y1 (cdr P)
@ -36,12 +58,12 @@ Q (38815646466658113194383306759739515082307681141926459231621296960732224964046
(%
(*
(+ (* X1 Y2) (* X2 Y1))
(inv (inc (* *D X1 X2 Y1 Y2))) )
(inv (inc (* X1 X2 Y1 Y2))) )
*Q )
(%
(*
(+ (* Y1 Y2) (* X1 X2))
(inv (- 1 (* *D X1 X2 Y1 Y2))) )
(inv (- 1 (* X1 X2 Y1 Y2))) )
*Q ) ) ) )
#{
def scalarmult(P,e):
@ -52,24 +74,19 @@ Q (38815646466658113194383306759739515082307681141926459231621296960732224964046
return Q
}#
(de scalarmult (P E)
(wait 100)
(if (=0 E)
(cons 0 1)
(let Q (scalarmult P (/ E 2))
(println 1)
(setq Q (edwards Q Q))
(println 2)
(when (bit? 1 E)
(setq Q (edwards Q P)) )
Q ) ) )
(trace 'scalarmult)
# (trace 'scalarmult)
(println
(scalarmult
(15112221349535400772501151409588531511454012693041857206046113283949847762202 . 46316835694926478169428394003475163141307993866256225615783033603165251855960)
36144925721603087658594284515452164870581325872720374094707712194495455132720 ) )
(msg 'ok)
(bye)