Oversættelse af Perl kode
Hej EksperterJeg er igang med at lave en lille Radius server, men har nogle problemer med at kryptere og dekryptere user-password attributen i en Radius pakke. Jeg har følgende stump kode fra Radius serveren radiator som viser hvordan de gør det. Så hvis der var nogle som kunne hjælpe med at oversætte det til VB.NET eller C#, da jeg ikke forstår Perl.
Er der nogen der kan hjælpe ?
Mvh. Bjørn
sub encrypt
{
my ($plaintext, $secret) = @_;
my $salt = pack('n', &Radius::Util::rand(65535)); # 2 bytes of salt
my $hash = Digest::MD5::md5($salt . $secret);
# Replicate the hash until its longer than the plaintext.
my $hashrep = $hash x int((length($plaintext) + 16) / 16);
my $encoded = MIME::Base64::encode_base64($salt . ($plaintext ^ $hashrep), '');
chomp $encoded; # Strip off trailing newline
return $encoded;
}
#####################################################################
# Decode the Base64 ciphertext according to the secret key
# Returns the plaintext
sub decrypt
{
my ($cipher, $secret) = @_;
my ($salt, $xor) = unpack('a2 a*', MIME::Base64::decode_base64($cipher));
my $hash = Digest::MD5::md5($salt . $secret);
# Replicate the hash until its same length as the xored cipher
# which should be a multiple of 16 bytes
my $hashrep = $hash x int((length($xor) + 15) / 16);
my $plaintext = $xor ^ $hashrep;
# Strip off any NUL padding
$plaintext =~ s/\000*$//;
return $plaintext;
}