Зеркальный фрагмент кода, который генерирует ключ и вектор инициализации в PHPC#

Место общения программистов C#
Ответить
Anonymous
 Зеркальный фрагмент кода, который генерирует ключ и вектор инициализации в PHP

Сообщение Anonymous »

У меня есть метод, написанный на C#, который генерирует ключ и вектор инициализации и использует их для шифрования данных. Я пытаюсь отразить этот метод в реализации PHP, но проблема в разных зашифрованных значениях, генерируемых на C# и PHP. Я провел расследование и обнаружил, что ключ и IV, используемые для шифрования, различаются в двух реализациях.
Ниже приведены соответствующие блоки кода, используемые для генерации ключа и IV в C# и PHP.< /p>
Фрагмент кода C#

Код: Выделить всё

string password = 'pass here';
byte[] salt = new byte[] { 0x43, 0x87, 0x23, 0x72, 0x45, 0x56, 0x68, 0x14, 0x62, 0x84 };
PasswordDeriveBytes pdb = new PasswordDeriveBytes(password, salt);
aesAlg.Key = pdb.GetBytes(32);
aesAlg.IV = pdb.GetBytes(16);
Console.WriteLine("Key: " + BitConverter.ToString(aesAlg.Key).Replace("-", ""));
Console.WriteLine("IV: " + BitConverter.ToString(aesAlg.IV).Replace("-", ""));
Фрагмент PHP-кода

Код: Выделить всё

$password = 'pass here';
$salt = hex2bin('43872372455668146284');
$keyLength = 32; // 32 bytes for AES-256 key
$ivLength = 16;  // 16 bytes for AES block size
$combinedLength = $keyLength + $ivLength;
$derivedBytes = hash_pbkdf2("sha1", $password, $salt, 100, $combinedLength, true);
$key = substr($derivedBytes, 0, $keyLength);
$iv = substr($derivedBytes, $keyLength, $ivLength);
echo "Key: " . bin2hex($key) . "\n";
echo "IV: " . bin2hex($iv) . "\n";
Кто-нибудь заметил разницу в этих двух реализациях, из-за которых код генерирует разные ключ и IV?

Подробнее здесь: https://stackoverflow.com/questions/786 ... tor-in-php
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»