aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--encrypt.sts4
-rw-r--r--main.sts12
2 files changed, 9 insertions, 7 deletions
diff --git a/encrypt.sts b/encrypt.sts
index 2422e66..edc9bbc 100644
--- a/encrypt.sts
+++ b/encrypt.sts
@@ -2,8 +2,8 @@ module ia32/elf/begin.sts
module cipher.sts
set_entry
- 31 32 local password
- 2 as passlen
+ 31 local password
+ 1 as passlen
passlen 1 - local pos
do sys_read 0 = until
password passlen pos cipher sys_write
diff --git a/main.sts b/main.sts
index 69d8d81..ee11303 100644
--- a/main.sts
+++ b/main.sts
@@ -51,11 +51,12 @@ defword checktext
drop drop drop drop drop drop drop drop drop drop drop drop drop
0 exit fi drop
dup 0 = untilod drop
-; ZERO DIVISION SHALL NOT PASS
-checktext.count 0 = if drop
- drop drop drop drop drop drop drop drop drop drop drop drop drop
- drop drop drop drop drop drop drop drop drop drop drop drop drop
-0 exit fi
+ ; At least half characters in text should be alphabetical:
+ checktext.count float_iload checktext.length float_iload float_div
+ 1 float_iload 2 float_iload float_div float_more if drop
+ drop drop drop drop drop drop drop drop drop drop drop drop drop
+ drop drop drop drop drop drop drop drop drop drop drop drop drop
+ 0 exit fi
; normalize:
0 do dup 1a = until
dup word_size mul checktext.fr + dup @ float_iload
@@ -82,6 +83,7 @@ set_entry float_init ; this is program with floats
do
; generate next key to try
keygen as keylen local key
+ '.' sys_write_err
; decipher text (length is the same as for ciphertext)
keylen 1 - length do 1 -