Tuesday, March 27, 2007

How to Improve Your Wi-Fi Network's Performance

By Becky Waring, PC World
How can I extend the range of my home Wi-Fi network?
First, make sure you are getting the most out of your current Wi-Fi router: Mount it in a central location in your house, preferably high on a wall; make sure that other 2.4-GHz devices such as cordless phones, baby monitors, wireless audio speakers, Bluetooth gadgets, and microwave ovens are not causing interference; and separate your router from your neighbors' router on the Wi-Fi spectrum. If they are using channel 1, for example, try channel 12 to minimize the chance of cross-channel interference.

If you still get a poor signal, consider upgrading to a router that incorporates MIMO (multiple-input, multiple-output) or draft-n technology. (See our latest review of these devices, "Wireless Routers: The Truth About Superfast Draft-N"). These routers not only provide far greater range than standard 802.11b/g routers, but they also boost speed by as much as ten times.

Finally, if you have particular Wi-Fi trouble spots in your house, such as odd corners, a basement, or an attic, power-line networking can be a great way to serve those areas. With power-line devices, you simply plug one adapter into a wall outlet and run an ethernet cord to your router; then you plug another adapter into an outlet near the device you want to connect to the network and run an ethernet cord to that device. You'll need reasonably clean power--free from excessive interference from other electrical devices--but the newest technologies, such as HomePlug AV and HD-PLC, work very well.

What's 802.11n? Do I need to upgrade my router?
Wi-Fi standards are continually evolving as technology advances. The first Wi-Fi routers were 802.11b, with a maximum of 11-megabits-per-second throughput. Next, 802.11g increased that to 54 mbps. Now, MIMO and draft-802.11n routers have pushed the wireless frontier to 280 mbps and beyond, rivaling wired ethernet. This year, the Wi-Fi Alliance will start certifying draft-802.11n routers. If you are in the market for a new router, definitely buy one of these models.

But if your old router provides satisfactory performance throughout your house, you needn't upgrade immediately. Your current equipment will operate just fine with 802.11n devices as they begin to appear. Wait to upgrade until you really need the added performance for bandwidth-intensive applications such as streaming video. Prices will only go down in the meantime.

How do I share a printer or game console over a Wi-Fi network?
For between $50 and $100, you can buy an adapter that will convert any device that has a wired ethernet port into a Wi-Fi-capable one. These Wi-Fi-to-ethernet bridges are available from companies like D-Link and Netgear, and are usually marketed as "wireless game adapters" for PlayStations, GameCubes, and Xboxes. But they work equally well with ethernet printers and network security cameras.

Often the adapters work right out of the box if your Wi-Fi net is configured to use DHCP, which enables dynamic IP addressing. If it's not, you can set up an adapter by connecting it to your PC and then assigning an IP address. Note that with some older game consoles, you must attach a networking adapter that equips them with an ethernet port before you can add the bridge. The Xbox 360 has a USB port, for which Microsoft sells a Wi-Fi adapter.

For printers without ethernet ports, you can buy a wireless print server, also available from companies like Belkin, D-Link, and Linksys. Be sure to choose a print server with ports (USB and/or parallel) that match your printers. Note, however, that multifunction devices usually lose all but their printing functions when networked this way.

Can I add a network hard drive to my Wi-Fi net?
There are two basic ways to add storage to your wireless network, but in either case, it's best to physically locate the drive(s) next to your router and connect them by wires rather than using a wireless adapter. Generally, you needn't put a network drive in a different room, and a wired connection is always faster and more reliable than wireless, especially if you have gigabit-ethernet equipment.

What you are really looking for is access to your network storage over your Wi-Fi net, which you can achieve by connecting any Network Attached Storage (NAS) device to one of your router's ethernet ports. Alternatively, you can buy a device like the Linksys Network Storage Link NSLU2, which connects two USB hard drives to any router via ethernet.

Can I use VoIP over Wi-Fi? What kind of quality will I get?
Voice over IP actually requires comparatively little bandwidth--under 100 kilobits per second per call--whereas network throughput is normally measured in megabytes per second. The problem with VoIP over Wi-Fi is more an issue of priorities: If someone else on the network is downloading large files from the Internet at the same time that you are making a call, choppiness and delays can occur.

Although the faster your router is, the fewer problems you should have using VoIP, most late-model wireless routers also incorporate a technology called 802.11e, or QoS (quality of service), that prioritizes streaming data ahead of regular data transfers. Be sure to get matching adapters that also support QoS, however.

How do I stream audio and video from one room to another via Wi-Fi?
Any audio or video that you can stream over a wired net, you can also stream via Wi-Fi. You just need to be sure that your Wi-Fi equipment's pipes are broad and fast enough to handle the data. For high-quality video, you'll probably need either 802.11e or a vendor's proprietary implementation of QoS enabled in both your router and adapters.

To stream your media, you'll also need some kind of streaming server, such as a Windows Media Center PC; an NAS drive with software like the open source SlimServer; or one of the many dedicated wireless streaming-media consoles, such as the D-Link MediaLounge Wireless HD Media Player or Roku SoundBridge M1001. See "Get More Out of Your Wireless Network" for more on wireless streaming.

Friday, March 16, 2007

Freedom from the office -- the Bedouin way

Leave the office behind -- forever

Mike Elgan

March 16, 2007 (Computerworld) -- San Francisco Chronicle journalist Dan Frost wrote a nice piece recently about local digital nomads he called Bay Area Bedouins. These are people who work for San Francisco start-up companies without offices, who roam from one coffeehouse to the next, working wherever they find a Wi-Fi connection. (Traditionally, a Bedouin is a desert-dwelling nomad who lives in a tent and moves around to find greener pastures for his camels, sheep and goats, bringing everything he needs with him.)

No matter who you are, you can embrace the new Bedouinism. You don't have to live in the Bay Area or the desert or work for a start-up. You don't even need access to a coffeehouse. It's easy, and I'll tell you how. But first, let me tell you why becoming a Bedouin can improve your life.

Boost your career

There are several ways Bedouinism can help your career. The most obvious one is that, when you carry your office with you, you'll be more responsive to colleagues and customers. Instead of replying to requests for a document with: "I'm on the road today, so I'll send it to you when I'm at my desk on Monday," you can reply with: "Here's the document."

the Bose Quiet Comfort headset The author busy at work on the Honduran island of Roatan during an islandwide blackout. This is why you need an extra battery.

A less obvious way the new Bedouinism can help you is that you can get closer to your business. For example, you can spend more time on the road visiting customers and attending more trade shows and other events that give you an edge. You can spend more time with suppliers and other business partners. You can do all this without a major penalty to your normal workload. You'll no longer do business the traditional way, in which you have two work modes: "in the office" and "on the road." Rather, you'll have only one work mode: "wherever I want to be and ready for anything."

You'll also be able to get work done at arbitrary times such as while shopping with your partner or standing in line at the DMV. In such situations, your brain is just sitting there doing nothing. You might as well whip out your phone and crank through some e-mails.

Take longer vacations

There's a lot of negative press these days about people who bring their work with them on vacations. And I agree. If you get only two or three weeks of vacation per year, you shouldn't spend that time working.

Bedouins take a different view. If you have the right kind of job, you can take vacations while you're "on the clock." In other words, you can travel for fun and adventure and keep on working. You can travel a lot more without needing more official vacation time.

I've done it. In August I took a monthlong vacation to Central America, backpacking from one Mayan ruin to the next, and I never officially took time off. I submitted my columns, provided reports and other input, participated in conference calls and interacted via e-mail. I used hotel Wi-Fi connections and local cybercafes to communicate and Skype to make business calls.

Nobody knew I was sunburned, drinking from a coconut and listening to howler monkeys as I replied to their e-mails.

Of course, this may be impossible in your line of work. But you can still be a part-time Bedouin and stretch vacations, taking small bits of time off that you otherwise couldn't.

Spend more time with friends and family

I don't advocate a workaholic lifestyle where you're taking calls constantly and never paying attention to the people in your personal life. But I do believe Bedouinism can get you out of your cubicle or office and into your home or wherever your family and friends are -- If you do it right.

Some critics slam the mobile lifestyle by saying that you never have any time off, that when e-mail comes in over the weekend, you are compelled to reply. But Bedouinism has no effect on the problem of workaholism -- it won't make you a workaholic if you aren't one now, and it won't cure workaholism, either. That's a separate issue (and a separate column). What Bedouinism does do is put you in control of where and when you work.

And remember: Giving yourself the ability to know when business e-mail and calls come in also tells you when they don't come in. My e-mail system sends all important e-mail to my BlackBerry Pearl, 24/7. (Here are details on my e-mail system.) So if my e-mail doesn't "ring" over the weekend, I can relax with the knowledge that nobody is waiting for me. If I do get mail over the weekend, I can choose to ignore it until Monday or, if it's important enough, reply immediately. In either case, I get maximum peace of mind. That's better than ignorance and the worry that some vital message is sitting there for days unread.

Have more fun

Here's the best reason to become a Bedouin: It's fun. Let's face it: offices suck. I'd much rather work at my dining room table, at the beach or -- what the heck -- at a San Francisco coffeehouse with the rest of my tribe. You spend one third of your waking life at work. Why spend a minute more than necessary in an environment where nobody wants to be?

The good news is that Bedouinism is cheaper and easier than ever before, thanks to myriad improvements in mobile hardware, software and services.

Here are my five steps to becoming a Bedouin:

1. Replace your desktop PC with a notebook. For less than $1,500, you can buy a desktop-replacement laptop with a 17-in. screen and tons of memory and storage. Get rid of your desktop computer forever and use one laptop for everything. If you crave the desktop experience, plug in peripherals like mouse, keyboard and giant monitor using a docking station.

People have their own preferences, but I wouldn't buy a laptop with anything smaller than a 17-inch screen. You'll be a lot happier and more productive than you would with a smaller screen. Buy an extra battery and look for hot-swappable components such as the ability to pull out the integrated CD/DVD drive and plug in the extra battery.

Every laptop has Wi-Fi these days, but make sure your new system has built-in Bluetooth, not the plug-in kind. You can use that Bluetooth connection for a variety of essential tasks such as using your cell phone as a modem and synchronizing your cell phone's data with the laptop.

Make sure you have extra protection for both your laptop and the add-on components. There are thousands of options available, from neoprene laptop covers to waterproof, padded briefcases. Find the option that best fits your style.
Aim is more connections per access point

Phil Hochmuth

March 16, 2007 (Network World) --

Foundry Networks Inc. this week launched new wireless LAN access points and controllers that can help users concentrate more connections per access point and stretch WLAN applications beyond simple data access.

With a new location management offering as well, Foundry said the new gear and software will help companies simplify WLAN deployment and management, and consolidate wireless data access with other services -- such as VoIP and location tracking -- on a single 802.11-based infrastructure.

Foundry's IronPort Mobility AP150 access point -- based on technology from Meru Networks -- can support as many as 120 WLAN connections per device, a useful feature for deployments in large public spaces or high-traffic areas. The IronPort Mobility Radio Switch 4000 is an even beefier WLAN access point, with built-in dual 802.11a and 802.11g radios, and support for as many as 256 connections per device. These products, combined with IronPort Wireless Location Manager 2.02 software, let users deploy such services as rogue-access-point detection and location, and WLAN-based employee or asset tracking.

The IronPort Mobility AP150 and IronPort Radio Switch 4000 provide multiple-radio coverage and the ability to deploy an entire WLAN with a single 802.11 channel and a single Secure Service Set Identifier network name. Foundry said this simplifies management and configuration for administrators.

The new IronPort gear also supports in-the-air quality of service (QoS) -- where the devices prioritize certain types of radio traffic between the client and the access point. Other WLAN equipment applies QoS settings to data or voice traffic only once packets hit the wired network at the access point, Foundry said.

The IronPort Wireless Location Manager 2.02 software now identifies the location of unauthorized access points -- for example, an access point set up by a user in a cubicle or at a desk -- as well as unauthorized WLAN clients in a building or campus. This service can be overlaid on top of an existing Foundry WLAN infrastructure and does not require additional access points dedicated to location tracking, the company says.

The Meru-based Foundry WLAN gear competes with products such as Cisco Systems Inc.'s Airespace-based WLAN equipment, as well as gear from Aruba Networks

Vista on a stick: How to flash your OS

This little trick can cut your work in half

Bill O'Brien
March 16, 2007 (Computerworld) -- In a world where there's too much to do -- and too little time to do it in -- we're always looking for shortcuts. So when we stumbled upon a blog entry by Kurt Shintaku over on Windows Live Spaces that promised to let us install Vista from a flash drive instead of an optical disc, there was certainly interest.

Why? Well, if we needed to install Vista on only one computer, it would be a case of "Who cares?" However, running down an aisle of 20 or 50 or 100 PCs with a flash drive in hand, pouring out data at 20MB/sec. – 25MB/sec. sure beats doing the same thing with a disc in hand and an optical drive pumping away at 16MB/sec. – 21MB/sec. Sure, it doesn't sound like much of a speed boost on paper, but when you start multiplying those small transfer rates by the length of each operation and then the number of repetitions, time can fly or it can crawl. The claim for the flash drive was that it soars, as much as 50% faster in some instances (assuming your PC's BIOS will let you boot from a USB device in the first place).

If that wasn't bait enough, fast 4GB flash drives aren't expensive, they can be recycled as Vista ReadyDrives when you're done, and best of all, the instructions for transferring our Vista disc to flash looked so easy a caveman could …, well you get the picture. There were only 10 steps:
diskpart
select disk 1
clean
create partition primary
select partition 1
active
format fs=fat32
assign
exit
xcopy d:\*.* /s/e/f e:\

All right, you've just had a panic attack. What the heck are those? They're command-line instructions. You need to start things off by clicking your way through Start/All Programs/Accessories/Command Prompt. It sets up a DOS (remember that?) command screen. "Diskpart" starts a scripting subroutine that lets you enter line commands (which are the next eight things in the list), after which you exit the subroutine and use xcopy to transfer the contents of the disc to flash. See? Simple.

All right, it would be if it worked, but try as we might -- and we did for hours and hours and hours of iterations -- it didn't. We could manually start the install from the flash drive from a computer that was already up and running, but it wouldn't boot -- and that's important when you're beginning with a blank PC.

The situation was very surprising because Ken Shintaku "works for Microsoft as a Principal Technology Specialist in Southern California." Then we noticed that Ken had stripped some of the front-end stuff from a colleague's blog and, in that way that technicians can often be careless with simple things, he forgot to mention something his colleague did: You need to do this from a Vista PC.

Again there's a why? Under XP, diskpart doesn't seem to recognize the flash device as a drive. It will display the device as a volume, but the remaining diskpart commands couldn't care less about that. Vista, on the other hand, recognizes the flash device as a drive. That's why we could transfer the contents of the Vista disc under XP, but we couldn't use the diskpart commands to make it a boot device. Needless to say, our first Vista install was from disc.
And it still didn't work! You know how it is when you pull a key out of your pocket and it won't unlock the lock even though you're positive it's the correct key. It might be the right key, but if so, it must be the wrong lock. Throwing caution to the wind, we reformatted the flash drive, this time under Vista, and tried again. Still nothing. The diskpart commands weren't working.

One more time into the breach. Formatted again, we took a look at the screen and saw that Vista recognized the drive as H: when there was no G: drive. It had skipped a letter. That shouldn't be a big thing. Diskpart commands work with disk numbers, not letters, and they're assigned consecutively irrespective of the letter assignment. Still, just in case, we took a quick trip into the Control Panel's Disk Administrative Tools application and changed the drive letter to G:.

Suddenly the skies cleared, the waters parted, and the commands worked flawlessly (almost -- Vista automatically reassigned the drive to H: after the "assign" command, and we needed to used that designation when we executed xcopy). The flash drive booted, Vista was installed, and, yes, it was faster than disc. Oh happy day!

But you're not quite done yet. Although the diskpart commands are very straightforward, they're also quite generic as shown. Let's take a last look at the list:

diskpart starts the "diskpart" scripting subroutine
select disk 1 focus all subsequent commands on a particular disk
clean clean all configuration information from the disk
create partition primary create a partition (of type)
select partition 1 move the focus to the partition just created
active mark the partition as an active boot partition
format fs=fat32 format the partition with a fat32 file system
assign assign a drive letter to the disk
exit exit diskpart
xcopy d:\*.* /s/e/f e:\ copy all files and directories from one device to another

After you've run the DOS command prompt screen and entered the diskpart command, you need to focus the rest of the subroutine commands on the disk you're about to work with by selecting it. It will probably not be "1" as shown. In fact, if you use the command as is, you'll destroy the contents of drive 1, whatever it might be.

To find out where your flash drive resides in the hierarchy, use the "list disk" command. (If you type "help" at the diskpart prompt you'll see a list of all available commands.) It will display each disk on your computer with its corresponding number. In our case, our Corsair Readout flash drive was shown as "3" so our select command was actually "select disk 3." From that point on, any command we issued within diskpart was used on disk 3 without needing to mention it specifically again.

The xcopy command is also device-specific. Our optical drive was actually F: and, as mentioned, the flash drive was H:. (After you exit diskpart and before you use xcopy, you can check with Vista to see what your drive assignments are. The DOS command prompt window will just cycle out of sight as you do, but you can select it again to bring it to the top). Our xcopy command, therefore, looked like this:

xcopy f:\*.* /s/e/f h:\

(If you're DOS savvy, you've probably realized that the /s and /e switches are contradictory. /s copies directories and subdirectories, but not empty ones, while /e copies directories and subdirectories, including empty ones. It didn't seem to cause a problem, so we let it be. The /f switch displays the full source and destination file names while copying is going on, and a file called install.wim, the actual installation image itself, will seem to take forever to get from disc to flash. Don't get anxious. Just sweat it out).

When xcopy has completed transferring files, close the command prompt window. That's it. You're done. You can boot from the flash drive and do all your installations from there. Now you just have to figure out what you'll be doing with your free time… (And should you want to use your flash drive as a ReadyDrive when all your installs are completed, you'll have to reformat it so it's blank and, once connected to your Vista computer, right-click its icon and set it to work as one from its Properties box).

Bill O’Brien has written a half-dozen books on computers and technology. He has also written articles on topics ranging from Apple computers to PCs to Linux to commentary on IT hardware decisions.

Saturday, March 10, 2007

300

a movie about an ancient war, done entirely in 3D, CGI, and other hi tech computing wizardry

watch














a little about the film

filming done in 60 days flat...
30 top end animation firms hired.
all sets, scenery, done on computer software, only actors real.
extensive use of blue screen...

enjoy

Friday, March 02, 2007

Data Encryption Techniques

Introduction

Often there has been a need to protect information from 'prying eyes'. In the electronic age, information that could otherwise benefit or educate a group or individual can also be used against such groups or individuals. Industrial espionage among highly competitive businesses often requires that extensive security measures be put into place. And, those who wish to exercise their personal freedom, outside of the oppressive nature of governments, may also wish to encrypt certain information to avoid suffering the penalties of going against the wishes of those who attempt to control.

Still, the methods of data encryption and decryption are relatively straightforward, and easily mastered. I[1] have been doing data encryption since my college days, when I used an encryption algorithm to store game programs and system information files on the university mini-computer, safe from 'prying eyes'. These were files that raised eyebrows amongst those who did not approve of such things, but were harmless [we were always careful NOT to run our games while people were trying to get work done on the machine]. I was occasionally asked what this "rather large file" contained, and I once demonstrated the program that accessed it, but you needed a password to get to 'certain files' nonetheless. And, some files needed a separate encryption program to decipher them.

Methods of Encrypting Data

Traditionally, several methods can be used to encrypt data streams, all of which can easily be implemented through software, but not so easily decrypted when either the original or its encrypted data stream are unavailable. (When both source and encrypted data are available, code-breaking becomes much simpler, though it is not necessarily easy). The best encryption methods have little effect on system performance, and may contain other benefits (such as data compression) built in. The well-known 'PKZIP®' utility offers both compression AND data encryption in this manner. Also DBMS packages have often included some kind of encryption scheme so that a standard 'file copy' cannot be used to read sensitive information that might otherwise require some kind of password to access. They also need 'high performance' methods to encode and decode the data.

Ways of encrypting data


1. The 'translation table', meets this need very well. Each 'chunk' of data (usually 1 byte) is used as an offset within a 'translation table', and the resulting 'translated' value from within the table is then written into the output stream. The encryption and decryption programs would each use a table that translates to and from the encrypted data. Further, such a method is relatively straightforward for code breakers to decipher - such code methods have been used for years, even before the advent of the computer. Still, for general "unreadability" of encoded data, without adverse effects on performance, the 'translation table' method lends itself well.

a. A modification to the 'translation table' uses 2 or more tables, based on the position of the bytes within the data stream, or on the data stream itself. Decoding becomes more complex, since you have to reverse the same process reliably. An example of this method might use translation table 'A' on all of the 'even' bytes, and translation table 'B' on all of the 'odd' bytes. Unless a potential code breaker knows that there are exactly 2 tables, even with both source and encrypted data available the deciphering process is relatively difficult.

b. Similar to using a translation table, 'data repositioning' lends itself to use by a computer, but takes considerably more time to accomplish. A buffer of data is read from the input, then the order of the bytes (or other 'chunk' size) is rearranged, and written 'out of order'. The decryption program then reads this back in, and puts them back 'in order'. Often such a method is best used in combination with one or more of the other encryption methods mentioned here, making it even more difficult for code breakers to determine how to decipher your encrypted data. The most common examples are anagrams. Some anagrams are easier than others to decipher, but a well written anagram is a brain teaser nonetheless, especially if it's intentionally misleading.

2. My favorite methods, however, involve something that only computers can do: word/byte rotation and XOR bit masking. If you rotate the words or bytes within a data stream, using multiple and variable direction and duration of rotation, in an easily reproducable pattern, you can quickly encode a stream of data with a method that is nearly impossible to break. In some cases, you may want to detect whether data has been tampered with, and encrypt some kind of 'checksum' into the data stream itself. This is useful not only for authorization codes but for programs themselves.

a. A virus that infects such a 'protected' program would no doubt neglect the encryption algorithm and authorization/checksum signature. A cyclic redundancy check is one typically used checksum method. It uses bit rotation and an XOR mask to generate a 16-bit or 32-bit value for a data stream, such that one missing bit or 2 interchanged bits are more or less guaranteed to cause a 'checksum error'. The method is somewhat well documented, and standard. But, a deviation from the standard CRC method might be useful for the purpose of detecting a problem in an encrypted data stream, or within a program file that checks itself for viruses.

3. Key-Based Encryption Algorithms:

a. One very important feature of a good encryption scheme is the ability to specify a 'key' or 'password' of some kind, and have the encryption method alter itself such that each 'key' or 'password' produces a different encrypted output, which requires a unique 'key' or 'password' to decrypt. This can either be a 'symmetrical' key (both encrypt and decrypt use the same key) or 'asymmetrical' (encrypt and decrypt keys are different). The popular 'PGP' public key encryption, and the 'RSA' encryption that it's based on, uses an 'asymmetrical' key. The encryption key, the 'public key', is significantly different from the decryption key, the 'private key', such that attempting to derive the private key from the public key involves many hours of computing time, making it impractical at best.

b. . In nearly all cases, if an operation is performed on 'a', resulting in 'b', you can perform an equivalent operation on 'b' to get 'a'.

c. In the case of the RSA encryption algorithm, it uses very large prime numbers to generate the public key and the private key. Although it would be possible to factor out the public key to get the private key (a trivial matter once the 2 prime factors are known), the numbers are so large as to make it very impractical to do so.

d. What PGP does (and most other RSA-based encryption schemes do) is encrypt a symmetrical key using the public key, then the remainder of the data is encrypted with a faster algorithm using the symmetrical key. The symmetrical itself key is randomly generated, so that the only way to get it would be by using the private key to decrypt the RSA-encrypted symmetrical key.

e. Example: Suppose you want to encrypt data (let's say this page) with a key of 12345. Using your public key, you RSA-encrypt the 12345, and put that at the front of the data stream (possibly followed by a marker or preceded by a data length to distinguish it from the rest of the data). THEN, you follow the 'encrypted key' data with the encrypted page text, encrypted using your favorite method and the key '12345'. Upon receipt, the decrypt program looks for (and finds) the encrypted key, uses the 'private key' to decrypt it, and gets back the '12345'. It then locates the beginning of the encrypted data stream, and applies the key '12345' to decrypt the data. The result: a very well protected data stream that is reliably and efficiently encrypted, transmitted, and decrypted. [2]

4. A brand new 'multi-phase' method (invented by ME)

a. I have (somewhat) recently developed and tested an encryption method that is (in my opinion) nearly uncrackable. The reasons why will be pretty obvious when you take a look at the method itself. I shall explain it in prose, primarily to avoid any chance of prosecution by those 'GUMMINT' authorities who think that they oughta be able to snoop on anyone they wish, having a 'back door' to any encryption scheme, etc. Well, if I make the METHOD public, they should have the same chance as ANYONE ELSE for decrypting things that use this method.

i. Using a set of numbers (let's say a 128-bit key, or 256-bit key if you use 64-bit integers), generate a repeatable but highly randomized pseudo-random number sequence (see below for an example of a pseudo-random number generator).

ii. 256 entries at a time, use the random number sequence to generate arrays of "cipher translation tables" as follows:

1. fill an array of integers with 256 random numbers (see below)

2. Sort the numbers using a method (like pointers) that lets you know the original position of the corresponding number

3. Using the original positions of the now-sorted integers, generate a table of randomly sorted numbers between 0 and 255. If you can't figure out how to make this work, you could give up now... but on a kinder note, I've supplied some source below to show how this might be done - generically, of course.

4. Now, generate a specific number of 256-byte tables. Let the random number generator continue "in sequence" for all of these tables, so that each table is different.

5. Next, use a "shotgun technique" to generate "de-crypt" cipher tables. Basically, if a maps to b, then b must map to a. So, b[a[n]] = n. get it? ('n' is a value between 0 and 255). Assign these values in a loop, with a set of 256-byte 'decrypt' tables that correspond to the 256-byte 'encrypt' tables you generated in the preceding step. NOTE: I first tried this on a P5 133Mhz machine, and it took 1 second to generate the 2 256x256 tables (128kb total). With this method, I inserted additional randomized 'table order', so that the order in which I created the 256-byte tables were part of a 2nd pseudo-random sequence, fed by 2 additional 16-bit keys.

6. Now that you have the translation tables, the basic cipher works like this: the previous byte's encrypted value is the index of the 256-byte translation table. Alternately, for improved encryption, you can use more than one byte, and either use a 'checksum' or a CRC algorithm to generate the index byte. You can then 'mod' it with the # of tables if you use less than 256 256-byte tables. Assuming the table is a 256x256 array, it would look like this:
crypto1 = a[crypto0][value] where 'crypto1' is the encrypted byte, and 'crypto0' is the previous byte's encrypted value (or a function of several previous values). Naturally, the 1st byte will need a "seed", which must be known. This may increase the total cipher size by an additional 8 bits if you use 256x256 tables. Or, you can use the key you generated the random list with, perhaps taking the CRC of it, or using it as a "lead in" encrypted byte stream. Incidentally, I have tested this method using 16 'preceding' bytes to generate the table index, starting with the 128-bit key as the initial seed of '16 previous bytes'. I was then able to encrypt about 100kbytes per second with this algorithm, after the initial time delay in creating the table.

7. On the decrypt, you do the same thing. Just make sure you use 'encrypted' values as your table index both times. Or, use 'decrypted' values if you'd rather. They must, of course, match.

5. However, if you're at a loss for a random sequence consider a FIBBONACCI sequence, using 2 DWORD's (like from your encryption key) as "seed" numbers, and possibly a 3rd DWORD as an 'XOR' mask. An algorithm for generating a random sequence of numbers, not necessarily connected with encrypting data, might look as follows:

  unsigned long dw1, dw2, dw3, dwMask;
int i1;
unsigned long aRandom[256]
dw1 = {seed #1};
dw2 = {seed #2};
dwMask = {seed #3};
// this gives you 3 32-bit "seeds", or 96 bits total
  for(i1=0; i1 < style="">
{
dw3 = (dw1 + dw2) ^ dwMask;
aRandom[i1] = dw3;
dw1 = dw2;
dw2 = dw3;
}

If you wanted to generate a list of random sequence numbers, let's say between zero and the total number of random numbers in the list, you could try something like THIS:
int __cdecl MySortProc(void *p1, void *p2)
{
  unsigned long **pp1 = (unsigned long **)p1;
  unsigned long **pp2 = (unsigned long **)p2;
  if(**pp1 < **pp2)
    return(-1);
  else if(**pp1 > *pp2)
    return(1);
   return(0);
}
...
  int i1;
  unsigned long *apRandom[256];
  unsigned long aRandom[256];  // same array as before, in this case
  int aResult[256];  // results go here
  for(i1=0; i1 <>
  {
    apRandom[i1] = aRandom + i1;
  }

// now sort it
  qsort(apRandom, 256, sizeof(*apRandom), MySortProc);
// final step - offsets for pointers are placed into output array
  for(i1=0; i1 <>
  {
    aResult[i1] = (int)(apRandom[i1] - aRandom);
  }
...

The result in 'aResult' should be a randomly sorted (but unique) array of integers with values between 0 and 255, inclusive. Such an array could be useful, for example, as a byte for byte translation table, one that could easily and reliably be reproduced based solely upon a short length key (in this case, the random number generator seed); however, in the spirit of the 'GUTLESS DISCLAIMER' (below), such a table could also have other uses, perhaps as a random character or object positioner for a game program, or as a letter scrambler for an anagram generator.

GUTLESS DISCLAIMER: The sample code above does not in and of itself constitute an encryption algorithm, or necessarily represent a component of one. It is provided solely for the purpose of explaining some of the more obscure concepts discussed in prose within this document. Any other use is neither proscribed nor encouraged by the author of this document, S.F.T. Inc., or any individual or organization that is even remotely connected with this web site.


[1] The author is a employee of Cisco, and the following extract is taken from his recollections.