Я посмотрел вокруг — и везде на Google — для прямого и ясного ответа на этот вопрос, но не получил нигде. так что здесь просто и ясно да или нет было бы здорово …
меня попросили создать «симметричный ключ AES-256 (также называемый« сеанс »)» — не шифрование, а просто ключ — для использования для подписи данных в заголовках мыльных сообщений. требование состоит в том, чтобы ключ был 256 «в размере» …
Да, я знаю…
я знаю, что размер 32 MCRYPT_RIJNDAEL_128 действительно является шифром AES-256 в php. Я прочитал все это.
Я знаю, что люди, спрашивающие меня, имеют реализацию в Java, которая работает для них. я должен работать с php. у меня есть следующий код:
`
$keysize = mcrypt_module_get_algo_key_size(MCRYPT_RIJNDAEL_128);
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '',MCRYPT_MODE_CBC, '');
$keysize = 32;
while (strlen($key) < $keysize) $key = mcrypt_create_iv(mcrypt_enc_get_iv_size ($td),MCRYPT_RAND);
это дает мне грубый «ключ».
вопрос: является ли необработанный ключ над «сеансным / симметричным ключом AES-256», который можно использовать для подписи мыльных заголовков безопасности?
после того, как необработанный ключ используется для подписи, он шифруется с использованием ключа из открытого сертификата (с использованием rsa-oaep-mgf1p) и внедряется в заголовки (тег EncryptedKey). он должен быть расшифрован на другом конце и использован для проверки дайджестов подписанных заголовков … а затем появляется гэндальф …
Я спрашиваю, потому что мне сказали с другой стороны (используя java), что «что-то не так, как генерируется симметричный ключ», но без четкого объяснения того, что в этом неправильно, и как исправить это неправильно.
кто-нибудь может помочь? я бы оценил это…
Благодарю.
Твой путь в порядке. Но более простой способ
random_bytes(32)
или же
openssl_random_pseudo_bytes(32)
если версия вашего php ниже 7.0.
Вы также можете сгенерировать 16-байтовый IV
random_bytes(16)
Других решений пока нет …