PHP выдает ошибку: `mcrypt_encrypt(): The IV parameter must be as long as the blocksize` Что ему не нравится в векторе? Код (PHP): // Ключ $AES_Key = "93908027539382757893442837120983"; // Вектор $AES_IV = "33985771209830270358974938292834"; // Методы function encrypt($string) { return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $AES_Key, addpadding($string), MCRYPT_MODE_CBC, $AES_IV)); } function addpadding($string, $blocksize = 32) { $len = strlen($string); $pad = $blocksize - ($len % $blocksize); $string .= str_repeat(chr($pad), $pad); return $string; } Аналогичный код на шарпе работает отлично: Код (PHP): // Ключ private const string AES_Key = "93908027539382757893442837120983"; // Вектор private const string AES_IV = "33985771209830270358974938292834"; // Зашифровывает строку в AES CBC 256 PKCS7 internal static string AES_Encrypt(string inputStr) { byte[] xBuff = null; using (var aes = new RijndaelManaged()) { // Настройки aes.KeySize = 256; aes.BlockSize = 256; aes.Padding = PaddingMode.PKCS7; aes.Mode = CipherMode.CBC; aes.Key = Encoding.UTF8.GetBytes(AES_Key); aes.IV = Encoding.UTF8.GetBytes(AES_IV); using (var ms = new MemoryStream()) { using (var cs = new CryptoStream(ms, aes.CreateEncryptor(aes.Key, aes.IV), CryptoStreamMode.Write)) { byte[] textArr = Encoding.UTF8.GetBytes(inputStr); cs.Write(textArr, 0, textArr.Length); } xBuff = ms.ToArray(); } } return Convert.ToBase64String(xBuff); }
Re: mcrypt_encrypt(): The IV parameter must be as long as th Посмотри готовый пример с aes из справки по функции.