Дешифровка строки

Himan

Новичок
Привет всем.
Помогите разобраться, пожалуйста. Есть такие данные (взято из оригинала документации провайдера):
enc_pan_exp_date (32 characters): 673826A18BAA1F18F70E89523F8CCA7F
AES_KEY (32 byte) : 13131313131313131313131313131313131313131313131313131313131313

"enc_pan_exp_date" should be decrypted by AES key with CBC algorithm.

Должно получиться 55711355711355758000000018128000

Пишу:
$decrypted_data = openssl_decrypt(
$enc_pan_exp_date,
"AES-128-CBC",
hex2bin($encryptionKey),
OPENSSL_RAW_DATA
);

После этой команды decrypted_data у меня = FALSE, т.е. ошибка. Что здесь не правильно?
Заранее благодарен.
 

Himan

Новичок
Спасибо, уже и подкрутил алгоритм.

$decrypted_data = openssl_decrypt(
$enc_pan_exp_date,
"AES-256-CBC",
pack('H*',$encryptionKey),
OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING
);


Стал получать что-то без ошибки. Но всё равно конечного результата не добился. Нинкак не могу понять в каком виде получается результат этого действа и соответственно не могу подобрать конвертацию.
 

Himan

Новичок
55711355711355758000000018128000
Я конечно подозреваю, что в доке не совсем корректные "вводные" данные.
В понедельник постараюсь начать реальный тест системы и посмотрю что мне "партнёры" возвращают.
 

AnrDaemon

Продвинутый новичок
Зашифрованная строка не может быть короче 32 символов. У тебя их только 16. Хоть убейся, ничего не выйдет.
 

Himan

Новичок
Спасибо всем за поддержку. Жду понедельника и поглядим на реальные данные
 

fixxxer

К.О.
Партнер клуба
55711355711355758000000018128000
А это dec или hex?

Тот же самый вопрос про ключ, какая-то там странная длина (хотя, впрочем, в hex еще более странная будет).

Зашифрованная строка не может быть короче 32 символов. У тебя их только 16. Хоть убейся, ничего не выйдет.
Можно предположить zero padding. Хотя откуда ему взяться в зашифрованной строке? Да и все равно какая-то ерунда получается.

Еще можно предположить, что данных действительно 16 (и это aes-128), но длина ключа в 31 не объясняется ничем.

С CBC еще надо предполагать нулевой IV. И какой вообще смысл в CBC без IV при размере данных в один блок?

В общем, слишком много предположений. Документацию писал идиот, короче.
 
Последнее редактирование:

AnrDaemon

Продвинутый новичок
Значит, они использовали cbc короче 128 и расшифровать в PHP вы его не сможете…

Либо, действительно, показывайте какие-то реальные данные, которые точно должны сойтись.
попробуем погадать.
 

Himan

Новичок
Если бы у меня были зданные, в которых я был бы уверен на все 100%, то у меня был бы и алгоритм. Пока этого нет
 

AnrDaemon

Продвинутый новичок
Вот попроси их сгенерить любой тестовый набор на их вкус, который абсолютно точно сходится.
Либо дай ссылку на инструкцию уже.
 

Himan

Новичок
Во-первых, инстракция в файле, ссылки нет. Но это и не главное. Во-вторых, поверь мне, никакой инфы в инструкции дополнительно нет от слова "совсем". Я уже попросил этих "гениев" самим написать мне как расшифровывать эту хрень
 

Тугай

Новичок
Код:
$enc_pan_exp_date = '673826A18BAA1F18F70E89523F8CCA7F';
$aes_key = '1313131313131313131313131313131313131313131313131313131313131313';

$decrypted_data = openssl_decrypt(
    hex2bin($enc_pan_exp_date),
    "AES-256-CBC",
    hex2bin($aes_key),
    OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING
);

var_dump(bin2hex($decrypted_data)); // 55711355711355758000000018128000
 

Himan

Новичок
Блииииин, спасибо агромедное. Главное я крутился вокруг да около. Спасибо ещё раз!!!
 

AnrDaemon

Продвинутый новичок
Ыыыыы… я чувствовал, что ответ где-то в районе OPENSSL_ZERO_PADDING… Но никак не мог выйти на нужную частоту волны.
@Тугай, спасибо!

Сохранил себе в скратчпадик.
 
Сверху