From: tausq <> Date: Sun, 30 Apr 2000 13:17:41 +0000 (+0000) Subject: fixed padding to allow spaces X-Git-Tag: release-0.3.33~137 X-Git-Url: https://git.adam-barratt.org.uk/?p=mirror%2Fuserdir-ldap-cgi.git;a=commitdiff_plain;h=84df47b464fcf0d1c1871445c19300a47efce79a fixed padding to allow spaces --- diff --git a/Util.pm b/Util.pm index 6117a4e..0ec02cd 100644 --- a/Util.pm +++ b/Util.pm @@ -51,7 +51,9 @@ sub Encrypt { my $input = shift; my ($pos, $output); - $input .= " " x ($blocksize - (length($input) % $blocksize)) if (length($input % $blocksize)); + # prepend a length byte */ + $input = chr(length($input)).$input; + $input .= "\001" x ($blocksize - (length($input) % $blocksize)) if (length($input % $blocksize)); for ($pos = 0; $pos < length($input); $pos += $blocksize) { $output .= unpack("H16", $cipher->encrypt(substr($input, $pos, $blocksize))) if ($hascryptix); @@ -64,7 +66,7 @@ sub Decrypt { # trailing spaces are unimportant. my $cipher = shift; my $input = shift; - my ($pos, $portion, $output); + my ($pos, $portion, $output, $len); ((length($input) % $blocksize) == 0) || &HTMLError("Password corrupted"); # should always be true... @@ -72,8 +74,10 @@ sub Decrypt { $portion = pack("H16", substr($input, $pos, $blocksize*2)); $output .= $cipher->decrypt($portion) if ($hascryptix); } - - $output =~ s/ +$//; + + # check length byte, discard junk + $len = substr($output, 0, 1); + $output = substr($output, 1, ord($len)); return $output; }