В настоящее время я работаю над интеграцией внешнего сервиса, написанного на VB.NET.Этот сервис отправляет мне строку с некоторой информацией, зашифрованной с помощью функции ниже (это отрывок и прошлое от внешнего разработчика сервиса, который прислал мне код)
Public Function Decode(ByVal S As String, ByVal chiave As String, ByVal iv As String) As String
Dim rjm As RijndaelManaged = New RijndaelManaged
rjm.KeySize = 128
rjm.BlockSize = 128
rjm.Key = System.Text.ASCIIEncoding.ASCII.GetBytes(chiave)
rjm.IV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv)
Try
Dim input() As Byte = System.Convert.FromBase64String(S)
Dim output() As Byte = rjm.CreateDecryptor.TransformFinalBlock(input, 0, input.Length)
Return System.Text.Encoding.UTF8.GetString(output)
Catch ex As System.Exception
Return S
End Try
End Function
, если я декодирую строку с функцией mcrypt ниже всеработа как ожидалось:
$mcrypt_cipher = MCRYPT_RIJNDAEL_128;
$mcrypt_mode = MCRYPT_MODE_CBC;
$iv= '1234567891011121';
$key = '1234567891011121';
$message= base64_decode($message);
$message = rtrim(mcrypt_decrypt($mcrypt_cipher, $key, $message, $mcrypt_mode, $iv), "\0");;
Но я не могу получить тот же результат с openssl_decrypt.функция всегда завершается с ошибкой в результате, ниже кода:
$result = openssl_decrypt(
base64_decode($message),
'AES-128-CBC',
$key,
OPENSSL_RAW_DATA,
$iv
);
Я почти уверен, что проблема связана с некоторыми отступами, которые я пропустил ... но я не понимаю, где проблематочно.
ОБНОВЛЕНИЕ1 - Я исправляю код, и $ iv, и $ key - строки, я забыл, что оба имеют 16Bytes = 128Bits