Конвертировать кодировку VB.NET AES в PHP, используя openssl_decrypt - PullRequest
0 голосов
/ 05 июня 2018

В настоящее время я работаю над интеграцией внешнего сервиса, написанного на 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

...