On Fri, May 19, 2000 at 03:22:19AM +0200, Simon Richter wrote: > Are you sure about that? I remember something about programs providing > the necessary hooks to insert encryption software to be restricted > too.
I, too, have heard about this. But I think it is something that people have said, rather than something which makes sense. Think about it: how many bits of encryption does a hook support? If the hook supports, say, an 8 bit key, that means it's not a restricted piece of munitions, right? But if a hook supports, say, a 448 bit key, that means it's a restricted piece of munitions, right? But what about a hook that doesn't care about keys? Aside: it's possible to write a trivial routine which takes a hash function and turns it into an encryption routine. So imagine I write a really dumb encryption routine, like: #!/usr/bin/perl sub hash { return @_; } # el-cheapo mechanism to turn string into a character generator sub gen { my ($string)= @_; my $j= 0; return sub { return substr $string, $j++, 1; } } sub gen_encrypt { my ($key, $gen_next_char)= @_; my ($char, $new_byte); return sub { if (length ($char= &$gen_next_char)) { $key= hash $key; $new_byte= chr(ord($key) ^ ord($char)); $key.= $new_byte; return $new_byte; } else { return undef; } } } sub gen_decrypt { my ($key, $gen_next_char)= @_; my ($char, $new_byte); return sub { if (length ($char= &$gen_next_char)) { $key= hash $key; $new_byte= chr(ord($key) ^ ord($char)); $key.= $char; return $new_byte; } else { return undef; } } } # demo $stream= gen_decrypt "foo", gen_encrypt "foo", gen "bar\n"; while (defined ($c= &$stream)) { print $c; } Ok, nothing illegal about that. Replace hash() with a 16 or 32 bit checksum, and you're fine, regardless of the size of your key. But, replace hash with md5sum (use Digest::MD5 'md5'), and all of a sudden you've got a 128 bit algorithm you can't export. But that didn't make the stupid xor encryption routine illegal. -- Raul