aboutsummaryrefslogtreecommitdiff
path: root/cipher.sts
diff options
context:
space:
mode:
Diffstat (limited to 'cipher.sts')
-rw-r--r--cipher.sts24
1 files changed, 8 insertions, 16 deletions
diff --git a/cipher.sts b/cipher.sts
index 72d941e..d351397 100644
--- a/cipher.sts
+++ b/cipher.sts
@@ -1,18 +1,10 @@
-; cipher is password string (pointer to start and length) and position in it
-
-defword ciphernew
- 0
-exit
-
-defword mod
- swap / drop
-exit
-
-defword cipher ; ... passwd plen ppos key
- 3 get 2 get + @ xor ; key = key ^ passwd[ppos]
- over 1 + 3 get mod 2 set ; ppos = (ppos + 1) % plen
-exit
-
-defword cipherdel
+defword cipher
+ 3 ref as byte
+ 2 get as password
+ 1 get as plen
+ 0 get as pos
+ pos @ password + @ byte @ xor byte !
+ pos @ 1 + pos !
+ pos @ plen = if 0 pos ! fi
drop drop drop
exit