ruby-aes использует отступы по умолчанию?

Я использую следующее в проекте RoR:

somepass =Aes.encrypt_buffer(128, 'ECB', some_cypher_key, nil, pain_string)

При использовании этой библиотеки и метода ECB использует заполнение по умолчанию или нет?

В конечном итоге я пытаюсь сделать так, чтобы приложение RoR и приложение Java могли создавать одну и ту же зашифрованную строку из одной и той же простой строки.

В коде Java я использую: cipher = Cipher.getInstance("AES/ECB/PKCS5Padding", "SunJCE");

Эти две строки кода не создают один и тот же зашифрованный ключ.


person Rafael    schedule 15.04.2011    source источник
comment
Я надеюсь, вы имели в виду, что они не создают один и тот же зашифрованный блок вместо одного и того же зашифрованного ключа?   -  person Milan    schedule 15.04.2011


Ответы (1)


Aes.encrypt_buffer будет использовать заполнение, но не такое, как вы ожидаете. Он дополнит блок n байтами со значением добавленных байтов. То есть, если ему нужно добавить 15 байтов, он будет дополнен 0x0f, если ему нужно добавить 5 байтов, он будет дополнен 0x05. То есть PKCS7, как описано в RFC-5652.

Вы должны переключиться на openssl или использовать Cipher.getInstance("AES/ECB/PKCS7Padding", "BC") с java.

person Milan    schedule 15.04.2011
comment
Спасибо Милан. Использование заполнения PKCS7 с поставщиком BC дает тот же результат, что и использование заполнения PKCS5 с поставщиком SunJCE. Любая идея, почему это? Также я заметил, что некоторые пароли возвращают зашифрованный ключ со знаком «-» впереди, но это не относится к ruby. есть идеи? Спасибо - person Rafael; 15.04.2011
comment
Прошло некоторое время с тех пор, как я в последний раз играл со стандартами pkc, но вскоре я понял, что pkcs7 — это просто расширение pkc5, которое может обрабатывать блоки большего размера. Вот почему вы получаете те же результаты. Кажется, код, который у вас есть, должен работать, но это не очень похоже из-за ошибочной стандартной реализации ruby-aes. Мой совет — вместо этого переключитесь на openssl и повторите попытку. - person Milan; 15.04.2011
comment
есть ли шанс, что я могу получить эти странные ключи, потому что я неправильно кодирую байты из шифра? - person Rafael; 15.04.2011