files updated on December 2003
The next Basic Binary Two Root Bijective LZW file and/or
string compressori called LZW3S
THIS PAGE UPDATED DEC 2003
This Page will discuss several bijective LZW style compressors. However it will take time
to put then all up so sarting with just the basic one this chirstmas and add other in the
next few days or weeks.
ozb only runs til a non "0" or "1" is read.
USE AT YOUR OWN RISK IN A DIECTORY BY ITSELF
ENJOY PURVEYOR OF FINE BIJECTIVE COMPRESSION CODE.
Merry Christmas 2002 and a Happy New Year 2003 DAVID A. SCOTT
*** LZW3S created by David A. Scott Dec 2003 ***
This is updated version of LZW1.exe calling it
LZW3S.exe
It is much slower then LZW1 it is also a bijective
2 root LZW type of compressor. However it compresses
each of the 18 file "Calagary Corpus" files set to a
smaller size than LZW1 even though it using smaller
table space. The compressed size is 1,983,894 bytes.
LZW1 compresses the "Calagary Corpus" to 1,997,265
bytes.
It also does not blow up on uncompressing common
repetive files which caused LZW1 to crash. In fact
all the Calgary Corpus files decompressed to less
space than the previous version. This was achieved
by changing various leaf nodes on the fly during
compression and decompression along with a psuedo
random dithering. And the two added processes occur
even when table space filled.
The best point is that it could be used as a last
pass in an ecncryption process before encryption
takes place.
Example: to compress and encrypt with full AES bijectively
LZW3s -c filein temp1
BICOM -d temp1 temp2
BICOM -p password fileout
filein input file to be compressed with LZW3s and encrypted
with AES
BICOM is by Matt Timmermans and can be found on the internet
password is just what it says
fileout is the compressed encrypted output file.
The reverse would be:
BICOM -d -p password fileout tempa
BICOM tempa tempb
LZW3s -c tempb fileoutt
note file:
tempa same as temp2
tempb same as temp1
fileoutt same as filein
There are many many ways to modify
the above and still get bijective file
encryption using full size AES
Another useful feature is whole file Whittening
before encryption. This means data is spread through
out the whole file you could replace the file
with whittened file it may be shorter or longer than
original.
To whitten a file:
LZW3s -d filein temp1
reverse temp1 temp2
LZW3s -c temp2 fileout
where reverse is my reverse at
http://biejctive.dogma.net/
There is a link to Matts page there.
To unwhitten the file just do
same procedure again using previous
output file as input.
The following are the LZW3s compressed lengths
BIB LZ3 79,717
BOOK1 LZ3 495,821
BOOK2 LZ3 411,866
GEO LZ3 77,163
NEWS LZ3 279,981
OBJ1 LZ3 17,069
OBJ2 LZ3 181,076
PAPER1 LZ3 42,058
PAPER2 LZ3 60,013
PAPER3 LZ3 35,784
PAPER4 LZ3 11,080
PAPER5 LZ3 10,226
PAPER6 LZ3 30,884
PIC LZ3 60,978
PROGC LZ3 32,493
PROGL LZ3 51,287
PROGP LZ3 36,720
TRANS LZ3 69,678
18 file(s) 1,983,894 bytes
**Note all the above uncompress back to the originals
The following are the LZW3s uncompressed lengths
BIB LZB 144,185
BOOK1 LZB 1,014,293
BOOK2 LZB 817,057
GEO LZB 140,224
NEWS LZB 486,726
OBJ1 LZB 28,411
OBJ2 LZB 336,047
PAPER1 LZB 67,720
PAPER2 LZB 106,478
PAPER3 LZB 59,997
PAPER4 LZB 16,912
PAPER5 LZB 15,306
PAPER6 LZB 48,360
PIC LZB 659,262
PROGC LZB 54,159
PROGL LZB 101,121
PROGP LZB 63,736
TRANS LZB 124,268
18 file(s) 4,284,262 bytes
**Note all the above compress back to the originals
THE ORIGINALS
BIB 111,261
BOOK1 768,771
BOOK2 610,856
GEO 102,400
NEWS 377,109
OBJ1 21,504
OBJ2 246,814
PAPER1 53,161
PAPER2 82,199
PAPER3 46,526
PAPER4 13,286
PAPER5 11,954
PAPER6 38,105
PIC 513,216
PROGC 39,611
PROGL 71,646
PROGP 49,379
TRANS 93,695
18 file(s) 3,251,493 bytes
**USE AT YOUR OWN RISK**
place in a seperate directory and test
if crital stuff after you compress make
sure the uncompress goes back to same file
use only as
** to compreess
LZW3s.exe -c filein fileout
** to uncompress
LZW3s.exe -d filein fileout
-c could be -cd compress and dump verbose
-d could be -dd uncompress and dump verbose
**Note all suff on from a PC using DJGPP port of
GNU C
HAVE A MERRY CHRISMAS
DAVID A. SCOTT