Зеркальный фрагмент кода, который генерирует ключ и вектор инициализации в 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

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