Greetings. I'm the author of CPAN's Crypt::Tea_JS which implements the Tiny Encryption Algorithm compatibly in Perl and JavaScript. It offers functions such as $cyphertext = encrypt( $plaintext, $key ); $plainagain = decrypt( $cyphertext, $key );
The encryption, of course, works with octets. I've just (version 2.13) introduced a first attempt at handling utf8 string arguments; this is still undocumented so I can change it if there's a better way. Currently, at the top of sub encrypt, there is: use bytes; ... sub encrypt { my ($str,$key)[EMAIL PROTECTED]; if ($] > 5.007 && Encode::is_utf8($str)) { Encode::_utf8_off($str); # $str = Encode::encode_utf8($str); } ... Is this the right sort of way to do it (e.g. functionality, portability) ? It means that after decrypting again the is_utf8 information is lost; But I don't see a way round that because 1) Perl's not the only language involved, 2) putting encoding information into the cyphertext would break backward compatibility and give an attacker a known-plaintext attack. Would it be worth giving sub decrypt an option to decode the plaintext into Perl's internal form (if it's well-formed), or should I leave that to the user and the Encode module ? Guidance gratefully received, Regards, Peter Peter Billam, DPIWE/ILS/CIT/Servers, hbt/lnd/l8, 6233 3061