On 24 Dec 2003 04:07:40 -0800,
bi***@eject.co.za (BillK) wrote:
Hi - I am looking for a solution to a clients requirement. They want
to distribute a database of info on CD, which user can search on
selected fields and results will be displayed.
The data and database MUST be encrypted and be displayed on-screen in
a format that cannot be 'Copy/Pasted'. Apart from the search results
displayed on-screen, user must NOT be able to extract multiple records
to use for Spamming.
Database about 1/2 million records with 10 fields.
Ideally application must run from CD with no setup.exe to install on
their PC.
Doesn't have to be VB, doesn't have to be a database, but must run on
Windows 95 upwards. We intend sending out hundreds of thousands of
CD's so s/w licensing cost is major issue
What can you suggest?
I did something pretty similar back in 1996
- it is still updated and distributed on a quarterly basis
- I give it the odd tweak, but cash-wise it is not interesting
Tackling the problems in order of (my) priority :-
VB5 or VB6 can run straight from a CD without any setup
- provided you do not use any OCXes or AX DLLs
- licensing costs are zero
Preventing Copy/Paste is a doddle
- you just Print the stuff on a Form/Picturebox/UserControl
- no chance of screen scraping
- and if someone uses OCR ... well they are too good to beat
You _definitely_ do not want to use a 'Database'
- well nothing you get from elsewhere
Rolling your own data format is not hard
- it is especially easy for Read Only Apps
Encryption is more of a pain
- in my case I opted for simplicity and simply mucked about with the
bits - this is Ok for seeing off non serious hackers but ...
A heck of a lot depends on the Data itself
- probably your best bet is to go for 'tokenization'
- most compression techniques maintain a 'lexicon' and replace words
or sequences with tokens
- however this is impractical when dealing with individual records
(each record would have its own 'lexicon' ... daft)
- and realistically you need some form of 'Random Access' system
- so you need a 'Global Token Lexicon'
I used this method on the UK PostCode (Zip Code) files
- primarily as a compression technique, but encryption is a byproduct
- also on an old 'Financial Directory' ...
You need a way of rapidly searching garbled data, that can be accessed
both sequentially and in random access
VB is not very fast at this stuff, so I resorted to Delphi
- it is worth taking a look at it
- Delphi DLLs integrate nicely with VB
Much depends on the data itself
- search speeds can be radically improved by maintaining multiple
bitmaps of known fields ... another technique
- that can be extended to extract files that store numbers instead of
words
The trick with read only databases is to anticipate as much as
possible when 'digesting' the data
I would not mind having a look at some of the data ...