jmcnamara has asked for the wisdom of the Perl Monks concerning the following question:
sub Decode { my $nPasswd = shift || 0; my $sPasswd = ''; my $sDummy = ''; my $nLen = 9; my $nDummy = 0; my $nNewChar = 0; $nPasswd ^= 0xCE4B; $nDummy = $nPasswd; while ( !($nDummy & 0x8000) && $nLen ) { $nLen--; $nDummy <<= 1; } if ( !$nLen ) { $nLen = 2; } if ( ($nLen ^ $nPasswd) & 0x0001 ) { $nLen++; } if ( $nLen == 9 ) { $nLen = 10; $nPasswd ^= 0x8001; } $nPasswd ^= $nLen; if ( $nLen < 9 ) { $nPasswd <<= (8 - $nLen); } for ( my $iChar = $nLen; $iChar > 0; $iChar-- ) { if ($iChar == 10) { $nNewChar = ($nPasswd & 0xC000) | 0x0400; $nPasswd ^= $nNewChar; $nNewChar >>= 2; } elsif ($iChar == 9) { $nNewChar = 0x4200; $nPasswd ^= $nNewChar; $nNewChar >>= 1; } elsif ($iChar == 1) { $nNewChar = $nPasswd & 0xFF00; } else { $nNewChar = ($nPasswd & 0xE000) ^ 0x2000; if ( !$nNewChar ) { $nNewChar = ($nPasswd & 0xF000) ^ 0x1800; } if ( $nNewChar == 0x6000 ) { $nNewChar = 0x6100; } $nPasswd ^= $nNewChar; $nPasswd <<= 1; } $nNewChar >>= 8; $nNewChar &= 0x00FF; $sPasswd .= chr $nNewChar; } print "<$sPasswd>\n\n"; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Encryption/hashing algorithm.
by ncw (Friar) on Sep 12, 2001 at 23:46 UTC |