ruby-aes использует отступы по умолчанию? - PullRequest
0 голосов
/ 15 апреля 2011

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

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

Использует ли этот lib и метод ECB заполнение по умолчанию или нет?

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

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

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

1 Ответ

1 голос
/ 15 апреля 2011

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

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

...