input must be 8 bytes long at DES.pm line 58. while using Net::SFTP
Posted on 2006-05-01 21:05:05-07 by arul
I have integrated NET:SFTP module and trying test the "sftp put" functionality.
Occasionally I get this error "input must be 8 bytes long at DES.pm line 58.".
When I execute the same command next time the sftp put works fine. Any clue?
Posted on 2006-05-02 19:09:54-07 by arul in response to 2224
More precisely I get this error first time after SFTP setup.After exchanging the keys. Please help..
Posted on 2006-07-03 05:30:56-07 by lyask in response to 2226
Hi arul, Have you resolved this issue yet? I also encountered this problem when using Net-SFTP. i It seems wired and I can't find the exactly solution to it. -Leo
Posted on 2006-08-03 12:18:18-07 by rahed in response to 2569
Possible culprit could be encoding. Your input has to have characters 8 byte long. If it's in e.g. utf8, change it this way: from_to ($input,'utf8','iso-8859-1') where from_to must be imported from Encode module. Radek
I was having the same problem when sending a User Password that was taken from the command line. The following code worked for me:
use utf8; # .. MORE CODE HERE .. # GET USER PASSWORD print "\nPassword for $UserName\n"; system('stty', '-echo') == 0 or die "can't turn off echo: $?"; my $UserPassword = <STDIN>; system('stty', 'echo') == 0 or die "can't turn on echo: $?"; chomp $UserPassword; # Remove newline character # Convert to utf8 to avoid problem with DES.pm module utf8::encode ($UserPassword); # THE SFTP CONNECTION THEN WORKS AS $sftp = Net::SFTP->new( $IndTarget, user=> $UserName, password=> $UserPassword, debug=>"true", );
(This article is based on a thread on the CPAN::Forum.)