Вы не предоставили мне зашифрованный текст, чтобы можно было это проверить.
Вот что я думаю вам нужно сделать:
В вашем коде C # вам нужно изменить размер блока на 128 бит:
aes.BlockSize = 128;
В вашем коде C # ваш IV должен иметь длину 128 бит или 16 байтов. Он должен соответствовать выбранному размеру блока.
Так что пока это должен быть ваш IV:
IV = HWeR102dxMjRHZlxTqL2aA==
Ваш ключ настроен на 256 бит: так вот ключ на 256 бит:
Key = aZUEBKSsYRKA6CGQbwFwvIS8rUnW7YA2hVMNHnnf844=
C # имеет функции, которые автоматически генерируют криптографически стойкую строку для вас определенной длины. Я предлагаю вам найти эти функции и научиться их использовать, чтобы вы могли создавать свои собственные ключи и IV.
Теперь для части PHP.
Вы должны использовать библиотеку OpenSSL вместо библиотеки Mcrypt. Mcrypt устарела и больше не поддерживается. Итак, вот решение OpenSSL.
Поскольку размер блока теперь составляет 128 бит, а размер ключа - 256 бит, он теперь будет совместим с функцией AES-256-CBC
библиотеки openssl.
$key = 'aZUEBKSsYRKA6CGQbwFwvIS8rUnW7YA2hVMNHnnf844='; //256 bit key.
$iv = 'HWeR102dxMjRHZlxTqL2aA=='; //128 bit IV length. The same as the block size that is set in the C#.
function decrypt($string, $key, $iv){
$cipherText = base64_decode($string); //We are going to use raw data.
return openssl_decrypt($cipherText, 'AES-256-CBC', base64_decode($key), OPENSSL_RAW_DATA, base64_decode($iv));
//Note that I did not specify no padding in the function. By default it is PKCS#7 which is what is set in the C# code.
}
Лучшее, что я могу сказать, должно сработать для вас. Это предположение основано на том факте, что ваш AES_encrypt()
работает правильно и на вашем компьютере установлен OpenSSL. Что вы, вероятно, делаете.
Надеюсь, это поможет!