шифрование — как создать симметричный ключ AES-256 с помощью переполнения стека

Я посмотрел вокруг — и везде на 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), что «что-то не так, как генерируется симметричный ключ», но без четкого объяснения того, что в этом неправильно, и как исправить это неправильно.

кто-нибудь может помочь? я бы оценил это…

Благодарю.

0

Решение

Твой путь в порядке. Но более простой способ

random_bytes(32)

или же

openssl_random_pseudo_bytes(32)

если версия вашего php ниже 7.0.

Вы также можете сгенерировать 16-байтовый IV

random_bytes(16)
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]