Доброго времени суток!
Довелось мне на днях написать метод генерации зашифрованного пароля для UlrtaVnc. Писать необходимо было на C#. Погуглив, нашел реализации алгоритма шифрования на Perl и Python.
Шифруется все алгоритмом DES. На Perl это выглядит так:
my $realkey = pack ('H16', "E84AD660C4721AE0");
my $cipher = Crypt::DES->new($realkey);
my $password = "test";
my $cryptpass = $cipher->encrypt($password);
Но вот с переводом данного кода на C# пришлось повозиться. Вот что получилось:
byte[] key = { 0xE8, 0x4A, 0xD6, 0x60, 0xC4, 0x72, 0x1A, 0xE0 };
DES des = DES.Create();
des.Key = key;
des.IV = key;
des.Mode = CipherMode.ECB;
des.Padding = PaddingMode.Zeros;
ICryptoTransform cryptoTransfrom = des.CreateEncryptor();
var password = "test";
byte[] data = Encoding.ASCII.GetBytes(password);
byte[] cryptpass = cryptoTransfrom.TransformFinalBlock(data, 0, data.Length);
В итоге получили нужное значение.