Как я могу расшифровать данные, зашифрованные с помощью ‘rijndael-128-cbc’ в ruby

Мне нужно расшифровать данные, которые зашифрованы php с помощью алгоритма ‘rijndael-128-cbc’.

Теперь у меня проблема с преобразованием php-кода в ruby-код.
ruby OpenSSL :: Cipher не поддерживает rijndael-128-cbc, тогда я использую «aes-128-cbc».
Я слышал, что AES основан на шифре Rijndael, поэтому, я думаю, я могу преобразовать дешифрование с помощью rijndael-128-cbc ‘в AES-128-CBC.

enc = OpenSSL::Cipher.new "AES-128-CBC"enc.encrypt
puts enc.key_len

Это выход 16

Однако в php

echo mcrypt_get_key_size('rijndael-128', 'cbc')

это получает 32

Есть ли разница между «rijndael-128» и «AES-128-CBC»?

и как я могу преобразовать описание rijndael-128-cbc в ruby?

1

Решение

Я не разработчик Ruby, поэтому я не могу помочь вам с кодом ruby, но я могу дать вам несколько советов о Rijndael и расширении PHP mcrypt …

Да, AES основан на Rijndael-128, и поэтому Rijndael-128 и AES-128 — это одно и то же.

Важно отметить, что число в вариациях Рейндаэля относится к шифру размер блока, в то время как для AES — это размер ключа, так (например) Rijndael-192 НЕ является AES-192; AES всегда имеет размер блока 16 байтов или 128 бит.

При этом Rijndael-128 также может быть AES-192 и AES-256, разница только в размере ключа.

Как описано в руководстве по PHP для mcrypt_get_key_size()функция возвращает максимальная длина ключа для поставляемого шифра …

AES-256 == Rijndael-128 with a 32-byte key

Вот почему он возвращает 32. Для AES-128 размер ключа, конечно, 16 — вы можете жестко его кодировать.

Надеюсь, это немного прояснит для вас.

4

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

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

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