.
This commit is contained in:
parent
9afae4a4db
commit
70182f7167
|
@ -55,6 +55,7 @@
|
|||
(% *By *Q) ) )
|
||||
|
||||
(de edwards (P Q)
|
||||
(println 'ed 'P P 'Q Q)
|
||||
(let
|
||||
(X1 (car P)
|
||||
Y1 (cdr P)
|
||||
|
|
13
expmod.l
13
expmod.l
|
@ -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
|
||||
|
|
39
scalarmult.l
39
scalarmult.l
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue