Чтобы получить хеш MD5 в PHP, используйте $key = md5($passphrase, true)
.Второй параметр дает необработанный вывод вместо его шестнадцатеричной кодировки.
Для шифрования / дешифрования с использованием Triple DES вы можете использовать модуль mcrypt
.В простейшем виде:
$ciphertext = mcrypt_encrypt(MCRYPT_3DES, $key, $data, MCRYPT_MODE_CBC);
Замечания:
- Triple DES использует 192-битные ключи, но у вас есть 128-битный ключ.PHP дополняет ключ значениями NULL, но .NET не позволяет использовать такие ключи.Вместо этого он добавляет первые 8 байтов в конец.
- .NET использует заполнение PCKS7, PHP использует заполнение нулями.
Чтобы обойти эту несовместимость, вам придетсявнести некоторые изменения в стандартный код.Это было снято с поста на php.net :
function encryptNET3DES($key, $vector, $text){
$td = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_CBC, '');
// Complete the key
$key_add = 24 - strlen($key);
$key .= substr($key, 0, $key_add);
// Padding the text
$text_add = strlen($text)%8;
for ($i=$text_add; $i<8; $i++){
$text .= chr(8-$text_add);
}
mcrypt_generic_init($td, $key, $vector);
$encrypt64 = mcrypt_generic($td, $text);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
// Return the encrypt text in 64 bits code
return $encrypt64;
}
Наконец, для кодирования / декодирования строк base64 используйте base64_encode
и base64_decode()