Próbuję przepisać tę funkcję w języku C#. ale wyjście C# typowi PZPPHP MCRYPT_RIJNDAEL_128 Szyfrowanie w C#
wersja PHP
// Encrypt data using AES128-cbc
function encrypt($data, $key, $iv) {
$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', 'cbc', '');
mcrypt_generic_init($cipher, $key, $iv);
$multipass = mcrypt_generic($cipher, $data);
mcrypt_generic_deinit($cipher);
return $multipass;
}
C# w wersji
public static string encrypt(string encryptionString, string iv, string key)
{
byte[] clearTextBytes = Encoding.UTF8.GetBytes(encryptionString);
var rijn = SymmetricAlgorithm.Create();
rijn.KeySize = 128;
rijn.Mode = CipherMode.CBC;
var ms = new MemoryStream();
var cs = new CryptoStream(ms, rijn.CreateEncryptor(Encoding.UTF8.GetBytes(key), Encoding.UTF8.GetBytes(iv)), CryptoStreamMode.Write);
cs.Write(clearTextBytes, 0, clearTextBytes.Length);
cs.Close();
var tmp = Encoding.UTF8.GetString(ms.ToArray());
return tmp;
}
Dlaczego przeskoczyć przez te 'CryptoStream' +' MemoryStream' obręcze, kiedy można po prostu zadzwonić 'Rijn .TransformFinalBlock'? – CodesInChaos
Dla innych, którzy próbują to zrobić, PaddingMode.Zeros (odpowiedź Syona poniżej) było rozwiązaniem dla mnie. –