mirror of
https://github.com/ilyakooo0/urbit.git
synced 2024-09-22 16:09:13 +03:00
WIP AES
This commit is contained in:
parent
62ac351101
commit
8f85e9fe9f
@ -3,6 +3,230 @@
|
||||
:: They will take forever and skywrite your secret key over Fort Meade.
|
||||
::
|
||||
|%
|
||||
++ aes
|
||||
=> |%
|
||||
++ ga :: GF (bex a)
|
||||
|= [a=@ p=@ g=@]
|
||||
=+ ma=(dec (bex a))
|
||||
=> |%
|
||||
::
|
||||
++ dif :: add and sub
|
||||
|= [b=@ c=@]
|
||||
(sit (mix b c))
|
||||
::
|
||||
++ dub :: double
|
||||
|= b=@
|
||||
?: =(1 (cut 0 [(dec a) 1] b))
|
||||
(dif p (lsh 0 1 b))
|
||||
(lsh 0 1 b)
|
||||
::
|
||||
++ elo :: exp/log tables
|
||||
=+ ^= nu
|
||||
|= [b=@ n=@]
|
||||
^- (map ,@ ,@)
|
||||
=+ c=*(map ,@ ,@)
|
||||
|-
|
||||
?: =(0 n)
|
||||
c
|
||||
%= $
|
||||
n (dec n)
|
||||
c (~(put by c) n b)
|
||||
==
|
||||
=+ [q=(nu 0 (bex a)) r=(nu ma ma)]
|
||||
=+ [i=0 a=1]
|
||||
|- ^- [q=(map ,@ ,@) r=(map ,@ ,@)]
|
||||
?: =(ma i)
|
||||
[(~(put by q) i a) r]
|
||||
%= $
|
||||
i +(i)
|
||||
q (~(put by q) i a)
|
||||
r (~(put by r) a i)
|
||||
a (dif a (dub a))
|
||||
==
|
||||
::
|
||||
++ sit :: reduce
|
||||
|= b=@
|
||||
(mod b (bex a))
|
||||
::
|
||||
--
|
||||
=+ elo
|
||||
|%
|
||||
++ fra :: divide
|
||||
|= [b=@ c=@]
|
||||
(pro b (inv c))
|
||||
::
|
||||
++ inv :: invert
|
||||
|= b=@
|
||||
=+ l=(~(get by r) b)
|
||||
?~ l !!
|
||||
=+ r=(~(get by q) (sub ma u.l))
|
||||
?~ r !!
|
||||
u.r
|
||||
::
|
||||
++ pow
|
||||
|= [b=@ c=@]
|
||||
=+ [d=1 e=c i=0]
|
||||
|-
|
||||
?: =(a i)
|
||||
d
|
||||
?: =(1 (cut 0 [i 1] b))
|
||||
$(d (pro d e), e (pro e e), i +(i))
|
||||
$(e (pro e e), i +(i))
|
||||
::
|
||||
++ pro :: multiply
|
||||
|= [b=@ c=@]
|
||||
=+ d=(~(get by r) b)
|
||||
?~ d 0
|
||||
=+ e=(~(get by r) c)
|
||||
?~ e 0
|
||||
=+ f=(~(get by q) (mod (add u.d u.e) ma))
|
||||
?~ f !!
|
||||
u.f
|
||||
::
|
||||
--
|
||||
--
|
||||
=+ [gr=(ga 8 0x11b 3) few==>(fe .(a 5))]
|
||||
=+ [pro=pro.gr dif=dif.gr pow=pow.gr rol=rol.few]
|
||||
=+ [nnk=8 nnb=4 nnr=14]
|
||||
=>
|
||||
|%
|
||||
++ pode
|
||||
|= [a=bloq b=@ c=@] ^- (list ,@)
|
||||
=+ d=(rip a c)
|
||||
=+ m=(met a c)
|
||||
|-
|
||||
?: =(m b)
|
||||
d
|
||||
$(m +(m), d (weld d (limo [0 ~])))
|
||||
++ sube
|
||||
|= a=@ ^- @
|
||||
(rep 3 (turn (pode 3 4 a) suby))
|
||||
++ suby
|
||||
|= a=@
|
||||
=+ ^= b
|
||||
0x16bb.54b0.0f2d.9941.6842.e6bf.0d89.a18c.
|
||||
df28.55ce.e987.1e9b.948e.d969.1198.f8e1.
|
||||
9e1d.c186.b957.3561.0ef6.0348.66b5.3e70.
|
||||
8a8b.bd4b.1f74.dde8.c6b4.a61c.2e25.78ba.
|
||||
08ae.7a65.eaf4.566c.a94e.d58d.6d37.c8e7.
|
||||
79e4.9591.62ac.d3c2.5c24.0649.0a3a.32e0.
|
||||
db0b.5ede.14b8.ee46.8890.2a22.dc4f.8160.
|
||||
7319.5d64.3d7e.a7c4.1744.975f.ec13.0ccd.
|
||||
d2f3.ff10.21da.b6bc.f538.9d92.8f40.a351.
|
||||
a89f.3c50.7f02.f945.8533.4d43.fbaa.efd0.
|
||||
cf58.4c4a.39be.cb6a.5bb1.fc20.ed00.d153.
|
||||
842f.e329.b3d6.3b52.a05a.6e1b.1a2c.8309.
|
||||
75b2.27eb.e280.1207.9a05.9618.c323.c704.
|
||||
1531.d871.f1e5.a534.ccf7.3f36.2693.fdb7.
|
||||
c072.a49c.afa2.d4ad.f047.59fa.7dc9.82ca.
|
||||
76ab.d7fe.2b67.0130.c56f.6bf2.7b77.7c63
|
||||
(cut 3 [a 1] b)
|
||||
:: ++ subz
|
||||
:: |= a=@
|
||||
:: =+ ^= b
|
||||
:: 0x5209.6ad5.3036.a538.bf40.a39e.81f3.d7fb.
|
||||
:: 7ce3.3982.9b2f.ff87.348e.4344.c4de.e9cb.
|
||||
:: 547b.9432.a6c2.233d.ee4c.950b.42fa.c34e.
|
||||
:: 082e.a166.28d9.24b2.765b.a249.6d8b.d125.
|
||||
:: 72f8.f664.8668.9816.d4a4.5ccc.5d65.b692.
|
||||
:: 6c70.4850.fded.b9da.5e15.4657.a78d.9d84.
|
||||
:: 90d8.ab00.8cbc.d30a.f7e4.5805.b8b3.4506.
|
||||
:: d02c.1e8f.ca3f.0f02.c1af.bd03.0113.8a6b.
|
||||
:: 3a91.1141.4f67.dcea.97f2.cfce.f0b4.e673.
|
||||
:: 96ac.7422.e7ad.3585.e2f9.37e8.1c75.df6e.
|
||||
:: 47f1.1a71.1d29.c589.6fb7.620e.aa18.be1b.
|
||||
:: fc56.3e4b.c6d2.7920.9adb.c0fe.78cd.5af4.
|
||||
:: 1fdd.a833.8807.c731.b112.1059.2780.ec5f.
|
||||
:: 6051.7fa9.19b5.4a0d.2de5.7a9f.93c9.9cef.
|
||||
:: a0e0.3b4d.ae2a.f5b0.c8eb.bb3c.8353.9961.
|
||||
:: 172b.047e.ba77.d626.e169.1463.5521.0c7d
|
||||
:: (cut 3 [a 1] b)
|
||||
++ rcon
|
||||
|= a=@
|
||||
(can 3 ~[[3 0] [1 (pow (dec a) 2)]])
|
||||
++ rote
|
||||
|= a=@ ^- @
|
||||
(rol 3 1 a)
|
||||
--
|
||||
|%
|
||||
++ ciph
|
||||
|= [a=@ b=@] ^- @
|
||||
=> %= .
|
||||
+
|
||||
=> +
|
||||
|%
|
||||
++ ankh
|
||||
|= [c=@ d=@]
|
||||
(pode 5 nnb (cut 5 [(mul (sub nnr c) nnb) nnb] d))
|
||||
++ sark
|
||||
|= [c=(list ,@) d=(list ,@)] ^- (list ,@)
|
||||
?~ c ~
|
||||
?~ d !!
|
||||
[(mix i.c i.d) $(c t.c, d t.d)]
|
||||
++ subs
|
||||
|= c=(list ,@) ^- (list ,@)
|
||||
?~ c ~
|
||||
[(rep 3 (turn (pode 3 4 i.c) suby)) $(c t.c)]
|
||||
++ srow
|
||||
|= c=(list ,@) ^- (list ,@)
|
||||
=+ ^= col
|
||||
|= i=@
|
||||
%+ can 3
|
||||
:~ [1 (cut 3 [0 1] (snag (mod i nnb) c))]
|
||||
[1 (cut 3 [1 1] (snag (mod +(i) nnb) c))]
|
||||
[1 (cut 3 [2 1] (snag (mod +(+(i)) nnb) c))]
|
||||
[1 (cut 3 [3 1] (snag (mod (add 3 i) nnb) c))]
|
||||
==
|
||||
(turn (limo ~[1 2 3 0]) col)
|
||||
++ mcol
|
||||
|= c=(list ,@) ^- (list ,@)
|
||||
=+ [p=_@ q=_@ r=_@ s=_@]
|
||||
|- ^- (list ,@)
|
||||
?~ c
|
||||
~
|
||||
=> .(p (cut 3 [3 1] i.c))
|
||||
=> .(q (cut 3 [2 1] i.c))
|
||||
=> .(r (cut 3 [1 1] i.c))
|
||||
=> .(s (cut 3 [0 1] i.c))
|
||||
:- %+ can 3
|
||||
:~ [1 :(dif (pro 0x3 p) q r (pro 0x2 s))]
|
||||
[1 :(dif p q (pro 0x2 r) (pro 0x3 s))]
|
||||
[1 :(dif p (pro 0x2 q) (pro 0x3 r) s)]
|
||||
[1 :(dif (pro 0x2 p) (pro 0x3 q) r s)]
|
||||
==
|
||||
$(c t.c)
|
||||
--
|
||||
==
|
||||
=+ [s=(pode 5 nnb a) i=1]
|
||||
=> .(s (sark s (ankh 0 b)))
|
||||
|-
|
||||
?. =(nnr i)
|
||||
=> .(s (subs s))
|
||||
=> .(s (srow s))
|
||||
=> .(s (mcol s))
|
||||
=> .(s (sark s (ankh i b)))
|
||||
$(i +(i))
|
||||
=> .(s (subs s))
|
||||
=> .(s (srow s))
|
||||
=> .(s (sark s (ankh nnr b)))
|
||||
(rep 5 s)
|
||||
++ keen
|
||||
|= a=@ ^- @
|
||||
=+ [b=a c=0 i=nnk]
|
||||
|-
|
||||
?: =(i (mul nnb +(nnr)))
|
||||
b
|
||||
=> .(c (cut 5 [0 1] b))
|
||||
=> ?: =(0 (mod i nnk))
|
||||
.(c (mix (sube (rote c)) (rcon (div i nnk))))
|
||||
?: &((gth nnk 6) =(4 (mod i nnk)))
|
||||
.(c (sube c))
|
||||
.
|
||||
=> .(b (cat 5 (mix c (cut 5 [7 1] b)) b))
|
||||
$(i +(i))
|
||||
++ en |=([k=@ m=@] (ciph m (keen k)))
|
||||
++ de |=([k=@ m=@] _@)
|
||||
--
|
||||
++ ed :: ed25519
|
||||
=> =+ b=256
|
||||
=+ q=(sub (bex 255) 19)
|
||||
|
22
try/bin/aes.hoon
Normal file
22
try/bin/aes.hoon
Normal file
@ -0,0 +1,22 @@
|
||||
!:
|
||||
:: /=try=/bin/aes/hoon
|
||||
::
|
||||
=> %= .
|
||||
+
|
||||
=> +
|
||||
^/=main=/lib/cryo
|
||||
==
|
||||
|= *
|
||||
|= ~
|
||||
^- bowl
|
||||
=+ gr:aes
|
||||
:_ ~
|
||||
:: =+ inx=0
|
||||
:: |- ^- (list gift)
|
||||
:: ?: =(inx 256) ~
|
||||
:: :_ $(inx +(inx))
|
||||
:_ ~
|
||||
:- %$
|
||||
!>
|
||||
:: `@ux`(keen:aes 0x603d.eb10.15ca.71be.2b73.aef0.857d.7781.1f35.2c07.3b61.08d7.2d98.10a3.0914.dff4)
|
||||
`@ux`(en:aes 0x1.0203.0405.0607.0809.0a0b.0c0d.0e0f.1011.1213.1415.1617.1819.1a1b.1c1d.1e1f 0x11.2233.4455.6677.8899.aabb.ccdd.eeff)
|
Loading…
Reference in New Issue
Block a user