powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Аналог openssl_encrypt из PHP
96 сообщений из 96, показаны все 4 страниц
Аналог openssl_encrypt из PHP
    #39509230
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с некой стороны от меня хотят нечто такое

Код: php
1.
$data = openssl_encrypt($data,'AES-256-CTR', $key);



но в жаве чистый AES накладывает ограничение на длину ключа (хорошо, до 16 символов довели) и вектор
как же там в этом пхп происходит шифровка и дешифровка без этих вещей???
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509236
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при попытке

Код: java
1.
cipher.init(Cipher.DECRYPT_MODE, key);



получаю

oracle-glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=95;_ThreadName=Thread-2;|java.security.InvalidKeyException: Parameters missing
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509249
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin
Код: php
1.
$data = openssl_encrypt($data,'AES-256-CTR', $key);


но в жаве чистый AES накладывает ограничение на длину ключа (хорошо, до 16 символов довели) и вектор

Эээ. 256 это разве не длина ключа? Кто такой "чистый AES в жаве?

wolverinкак же там в этом пхп происходит шифровка и дешифровка без этих вещей???
Каких вещей? Рекомендую посмотреть на библиотеки
BouncyCastle - умеет всё.
jasypt - простой API для тех кому сложно.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509256
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

ну т.е. чистый - инициализация соли, вектора, догонка длины ключа до алгоритма, словом тот что Cipher.getInstance("AES/CTR/NoPadding")
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509258
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczBouncyCastle - умеет всё.
jasypt - простой API для тех кому сложно.
да хотелось бы штатными средствами обойтись, нужно то вроде простую вещь
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509260
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я делал на С++ для PHP, но там использовал mcrypt, в котором все это есть, а как эта функция шифрует не пойму.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509266
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinда хотелось бы штатными средствами обойтись, нужно то вроде простую вещь
Так это. Код мы сегодня увидим или дальше на пальцах обсудим?
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509268
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

дак код на пхп я привел, а какой нужен в жава я не знаю )

Код: java
1.
2.
3.
4.
5.
6.
String originalText = "фывафыва";
SecretKeySpec key = new SecretKeySpec("1234567890123456".getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/CTR/NoPadding");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] ciphered = cipher.doFinal(originalText.getBytes());
String encryptedString =  new String(ciphered);


что то шифрует, но выдает не то что openssl_encrypt
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509277
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin,

Уберите русский текст из теста и покажите что у вас выдаёт PHP.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509284
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

у меня нету пхп, ответ его я получаю снаружи, но даже мой текст без указания вектора каждый раз выдает разный шифрованный текст
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509289
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторчто то шифрует, но выдает не то что openssl_encrypt
Как понять "не то"?
Не в том формате? Результат для одних и тех же входных данных всегда будет разный и это нормально.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509292
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinString encryptedString = new String(ciphered);

Это не валидное преобразование. Не любой набор байт это текст в текущей кодировке . Ещё поди угадай какая она у вас.
На сколько я понял из доки openssl_encrypt вообще-то в Base64 заворачивает результат. У вас этого нет.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509293
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

вводные данные одинаковые, а шифрованный текст получается разный, так я проверяю получится ли на той стороне дешифровать, естественно пробовал и передавать свой шифрованный и там не дешифрует.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509294
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В PHP он вообще похоже что в base64 выдает результат.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509297
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinу меня нету пхп, ответ его я получаю снаружи, но даже мой текст без указания вектора каждый раз выдает разный шифрованный текст
Ну, то есть вам помощь не нужна, вы поплакаться здесь. Если нужна помощь - напишите внятный тест: "Такие-то входные данные. Такие-то нужны на выходе. Вот код. Вот что он возвращает."
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509301
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin,

Пока что выяснилось 3 момента.
1. Учитывайте кодировки. Компиляция Unicode текста, методы getBytes(), new String() - используют текущую кодировку. Вы не знаете совпадает ли она с той что используется пыхой. Нужно выяснить и указывать кодировку явно, если вам ASCII диапазона не достаточно.

2. По-умолчанию в PHP iv - пустая строка. Скорее всего ни на что не повлияет, но я пока не уверен.

3. PHP по-умолчанию возвращает Base64, сырые данные возвращаются только специальными опциями.

Приведите в порядок хотя бы пункты 1 и 3.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509303
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

так а как пароли тут выложить чужие?
спасибо, если речь за базе64, то я пробовал и с ним вместо последней строки
Код: java
1.
String encryptedString = javax.xml.bind.DatatypeConverter.printBase64Binary(ciphered);


однако шифрованный текст тоже каждый раз разный

с другой стороны не пришло в голову, потому как они мне присылают пример свой в котором
Код: php
1.
2.
3.
	$data = openssl_encrypt($data,'AES-256-CTR', $key);
	$query = base64_encode($data);
	$href = ... $query
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509305
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinкак же там в этом пхп происходит шифровка и дешифровка без этих вещей???
Есть несколько путей получения требуемого для AES размера ключа: например, дополнение или хэширование пароля. Какой именно используется в PHP - спрашивайте в разделе PHP.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509306
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin,

кодировка у меня утф8, пробовал и аскии, видимо все таки придется сделать их пример чтобы убедиться какой они получают кодированный текст
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509308
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вектор разный каждый раз, то и результат будет разный. Я не вижу, чтобы вы вектор вообще указывали.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509309
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

думаете они там знают!? мне кажется кто пытался на жаве это хэшировать вероятнее знать.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509310
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinтак а как пароли тут выложить чужие?

У вас тестового сервера нет? Сразу на продакшне тестируете?
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509311
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

так я и говорю - вектор в пхп не указывается, и я его опустил и естественно получаю разные результат
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509312
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinкодировка у меня утф8, пробовал и аскии,
Они не взаимозаменяемы. Либо вам нужен unicode, либо нет.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509316
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczУ вас тестового сервера нет? Сразу на продакшне тестируете?
я уже результат имею ширования в пхп, вот и пытаюсь получить то же самое.
хорошо, сейчас попробую их пример - получаю ли те же данные что и они.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509320
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz2. По-умолчанию в PHP iv - пустая строка. Скорее всего ни на что не повлияет, но я пока не уверен.

Всё. Понял. Я тупой. Надо найти дефолтное значение?
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509322
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczНадо найти дефолтное значение?
да (
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509325
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как дополняется пароль до длины и какой вектор используется чтоб все тоже самое в жаве сделать
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509327
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фу блин. IV это же типа соли. Рандомная примесь. Вот оно и будет всегда разным. Даже на PHP.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509330
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinкак дополняется пароль до длины и какой вектор используется чтоб все тоже самое в жаве сделать
Может всё же не парится и взять готовое?
http://juliusdavies.ca/commons-ssl/javadocs/org/apache/commons/ssl/OpenSSL.html
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509333
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

нет, сейчас проверил, openssl_encrypt($data,'AES-256-CTR', $key) всегда выводит одно и то же

ссылку изучаю.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509335
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что там вектор всегда один и тот же - пустой. Новые версии пхп вообще ошибку генерируют.

Код: plaintext
PHP Error[2]: openssl_encrypt(): Using an empty Initialization Vector (iv) is potentially insecure and not recommended
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509338
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посолить надо. Что-б пароль не протух.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509341
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettПотому что там вектор всегда один и тот же - пустой. Новые версии пхп вообще ошибку генерируют.

Код: plaintext
PHP Error[2]: openssl_encrypt(): Using an empty Initialization Vector (iv) is potentially insecure and not recommended

пустой это какой? нулл, пустая строка или что?
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509342
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
/**
 * Encrypts data
 * @link http://php.net/manual/en/function.openssl-encrypt.php
 * @param string $data <p>
 * The data.
 * </p>
 * @param string $method <p>
 * The cipher method.
 * </p>
 * @param string $key <p>
 * The key. For a list of available cipher methods, use {@see openssl_get_cipher_methods()}.
 * </p>
 * @param int $options [optional] <p>
 * options is a bitwise disjunction of the flags OPENSSL_RAW_DATA and OPENSSL_ZERO_PADDING.
 * </p>
 * @param string $iv [optional] <p>
 * A non-NULL Initialization Vector.
 * </p>
 * @param string &$tag <p>The authentication tag passed by reference when using AEAD cipher mode (GCM or CCM).</p>
 * @param string $aad <p>Additional authentication data.</p>
 * @param int $tag_length [optional] <p>
 * The length of the authentication tag. Its value can be between 4 and 16 for GCM mode.
 * </p>
 * @return string the encrypted string on success or false on failure.
 * @since 5.3.0
 */
function openssl_encrypt($data, $method, $key, $options = 0, $iv = "", &$tag = NULL, $aad = "", $tag_length = 16) { }
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509344
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinнет, сейчас проверил, openssl_encrypt($data,'AES-256-CTR', $key) всегда выводит одно и то же
ссылку изучаю.
Ну, можно, конечно и так попробовать.
IvParameterSpec iv = new IvParameterSpec(new byte[16]);
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509348
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот тут можно поизучать код по поводу поведения по-умолчанию.
https://github.com/php/php-src/blob/master/ext/openssl/openssl.c
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509349
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinнет, сейчас проверил, openssl_encrypt($data,'AES-256-CTR', $key) всегда выводит одно и то же

Стремление сделать что было так же - не понятно, особенно, если учесть что IV на расшифровку влиять не должен.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509351
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

почему это не должен? для дешифровки же соль тоже передается вместе с ключом
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509358
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вектор передается вместе с шифрованными данными.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509363
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinпочему это не должен? для дешифровки же соль тоже передается вместе с ключом
Да. Должен. Я снова ошибся. Но вот передаваться он не должен. Иначе он был бы ключом.

wikipediaThis is because the IV need not be explicitly forwarded to a recipient but may be derived from a common state updated at both sender and receiver side. (In practice, a short nonce is still transmitted along with the message to consider message loss.)
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509365
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettВектор передается вместе с шифрованными данными.
Спасибо. Как я понял OpenSSL вычисляет IV из ключа каким-то своим алгоритмом. Это ещё больше подтверждает надобность изспольховать openssl напрямую или какую-нибудь совместимую реализацию.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509366
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509372
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin,

Походу нет смысла самому писать:
https://www.openssl.org/docs/man1.0.2/crypto/EVP_BytesToKey.html
Потому что там не просто шифрование, а ещё и openssl отсебятина. Поэтому либо вызывайте openssl напрямую, через ProcessBuilder или JNA. Либо попробуйте Java реализацию.

Либо вот ещё готовый пример нашелся для EVP_BytesToKey
https://stackoverflow.com/a/11786924
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509375
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczHettВектор передается вместе с шифрованными данными.
Спасибо. Как я понял OpenSSL вычисляет IV из ключа каким-то своим алгоритмом. Это ещё больше подтверждает надобность изспольховать openssl напрямую или какую-нибудь совместимую реализацию.
Я-бы сказал что это не выдерживает критики. Вместо неправды мы получили сложную
полу-правду которую надо долго доказывать. Я думаю что Шнайер, Циммерман, Диффи и Хелман
топают ногами и изрыгают проклятия читая описание API.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509686
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczНу, можно, конечно и так попробовать.
IvParameterSpec iv = new IvParameterSpec(new byte[16]);
не прокатывает, видимо собака в чем то другом зарыта
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509691
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinне прокатывает, видимо собака в чем то другом зарыта
А до конца дочитать:
20744233
?
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509711
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

думаю он не поможет, я попробовал в баше
Код: powershell
1.
echo "qwertyuiopasdfghjkl" | openssl enc -aes-256-ctr -pass pass:"1234567890123456" | openssl enc -base64



каждый раз получаю разный ответ

U2FsdGVkX1+unQA7NKNfmutrBOTNtew/Bo/Cx4cC1BIRoYoM
U2FsdGVkX1+MugZywpgJTz80opmjRPwFMHvK8vUg4pAaBvYX
U2FsdGVkX19iFwoYVDkSYf7gilOkEV2jyJir3AQKsHD3fZjW

однако обратный вариант ото всех шифровок будет
Код: powershell
1.
echo "U2FsdGVkX1+unQA7NKNfmutrBOTNtew/Bo/Cx4cC1BIRoYoM" | openssl enc -base64 -d  | openssl enc -aes-256-ctr -pass pass:"1234567890123456" -d


qwertyuiopasdfghjkl
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509718
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin,

Возможно он соль динамически генерит? Если есть задача 100% идентичности, то можно выдрать openssl реализацию из PHP соответствующей версии. Или даже с PHP интегрироваться.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509724
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если использовать ключ (K) и вектор инициализации (IV) явно .. то процесс генерации рандомной соли подавляется.

Код: sql
1.
$ echo "mayton" | openssl enc -aes-256-ctr -k CAFEBABE -iv BADCAFE | openssl enc -base64
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509727
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вектор не может быть статическим, конечно он генерится рандомно и включается в результат, благодаря чему по тому же ключу можно расшифровать без каких-то дополнительных данных.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509730
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin,

надо ещё версии openssl посмотреть. Может если найти старую той же что у вас в пыхе, то будет нужное поведение.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509731
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hettвектор не может быть статическим
Вы перепутали "может" и "должен".
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509735
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczHettвектор не может быть статическим
Вы перепутали "может" и "должен".

Имею в виду, что не может быть такого, что в openssl он статический.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509737
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettИмею в виду, что не может быть такого, что в openssl он статический.
Он вычисляется из ключа, когда не указан. Откуда ему ещё взяться, если его явно нет, а он нужен для расшифровки?
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509749
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин запутано все. Шнайер в своей книжке пишет что IV вобщем-то передается
открыто первым блоком. Он не особо секретен но его задача - сделать уникальным и секретным
следующий блок - хедер сообщений (которые имеют регулярную природу).

В качестве IV он предлагает счетчик или number-used-once (nonce).

Тоесть основное требование - уникальность по отношению к последовательности
шифро-сообщений в системе.

Фергюсон. Шнайер - Практическая криптография - 5.3 Сцепление шифрованных блоков (CBC)
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509755
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonБлин запутано все. Шнайер в своей книжке пишет что IV вобщем-то передается
открыто первым блоком. Он не особо секретен но его задача - сделать уникальным и секретным
следующий блок - хедер сообщений (которые имеют регулярную природу).
Это всё теория. Вопрос о практике и конкретной реализации.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509758
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, ты имеешь в виду первый вопрос автора?
но в жаве чистый AES накладывает ограничение на длину ключа (хорошо, до 16 символов довели) и вектор
как же там в этом пхп происходит шифровка и дешифровка без этих вещей???
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509760
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с вектором тоже проблема, явно указывая его в openssl_encrypt добиться такого же ответа не могу
похоже надо все таки на mcrypt давить чтобы переходили с той стороны, там хоть поведение идентично
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509764
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczОн вычисляется из ключа, когда не указан.
Откуда такая информация?
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509765
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettОткуда такая информация?
https://wiki.openssl.org/index.php/Enc -iv IV
This specifies the initialization vector IV as hexadecimal number. If not explicitly given it will be derived from the password . See key derivation for details.
https://wiki.openssl.org/index.php/Manual:EVP_BytesToKey(3)
https://stackoverflow.com/questions/11783062/how-to-decrypt-file-in-java-encrypted-with-openssl-command-using-aes
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509773
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin , а какая версия PHP у тебя?

(я щас смотрю в какой-то API и пытаюсь понять подходит он тебе или нет).
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509778
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

тоже в него смотрю уже, хотя бы с башем добиться совпадения для понимания, там есть пример в комментариях
PHP 5.4.45-0+deb7u9
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509805
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin, смотри мой поинт в том чтобы сильно глубоко не копать в принципы криптографии
(все равно не разберемся в рамках топика). Но хотябы забить все дефолтные параметры
openssl_encrypt(..) в Java и в PHP явными значениями (названия шифров и методы
сцепления блоков и длины ключей).

И открытые вопросы:
1) Что менять можно а что нельзя? Java или PHP? Можно ли вообще поменять метод шифрования и насколько?
2) У тебя есть возможность запускать PHP в консоли? Как тут http://php.net/manual/ru/features.commandline.php
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509811
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonwolverin, смотри мой поинт в том чтобы сильно глубоко не копать в принципы криптографии
(все равно не разберемся в рамках топика).
Во-первых уже разобрались.
Во-вторых, поставить рядом ту же версию пыхи и вызывать любым удобным интеропом. Производительность страдает, но нужна ли она здесь?
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509815
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

1. с методом скорее всего упрутся, пароль вот удлинили до 16 байт (был 8)
2. возможность то есть, она это моя версия, какая на той стороне не знаю, по отсутствию вектора видимо где то такая же
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509819
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

ответ пхп как у них я добился в своей, там все как в приведенном примере, все утф8, а вот чтобы что то еще дало такой же результат - пока нет
но в документации в комментариях есть пример, разбираюсь в нем
---
BECAUSE THE PASSWORD PARAMETER DOCUMENTED HERE IS NOT THE PASSWORD.

It means that the password parameter of the function is not the same string used as [-pass pass:] parameter with openssl cmd tool for file encryption decryption.

IT IS THE KEY !
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509831
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinmayton,
1. с методом скорее всего упрутся, пароль вот удлинили до 16 байт (был 8)

Ну это ОК. Это нормуль.

2. возможность то есть, она это моя версия, какая на той стороне не знаю, по отсутствию вектора видимо где то такая же
Узнай пожалуйста как на серваке. Это важно для топика. И узнай версии OpenSSL расширений.

Как тут.
Код: sql
1.
2.
3.
<?php
echo 'Текущая версия PHP: ' . phpversion();
?>


Код: php
1.
2.
3.
4.
<?php
echo "openssl version text: " . OPENSSL_VERSION_TEXT . "\n";
echo "openssl version number:  " . OPENSSL_VERSION_NUMBER . "\n";
?>
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509840
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Текущая версия PHP: 5.4.45-0+deb7u9
openssl version text: OpenSSL 1.0.1t 3 May 2016
openssl version number: 268439887
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509850
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЕсли использовать ключ (K) и вектор инициализации (IV) явно .. то процесс генерации рандомной соли подавляется.

Код: sql
1.
$ echo "mayton" | openssl enc -aes-256-ctr -k CAFEBABE -iv BADCAFE | openssl enc -base64



У меня не подавляется.
Код: sql
1.
2.
$ openssl version
OpenSSL 1.0.1f 6 Jan 2014


Код: sql
1.
2.
3.
4.
5.
6.
$ echo "qwertyuiopasdfghjkl" | openssl enc -aes-256-ctr -k CAFEBABE -iv BADCAFE -pass pass:"1234567890123456" | openssl enc -base64
U2FsdGVkX18CzZUkgxIjSA4xKcxeRU89SVg3AkwneJLi8F1p
$ echo "qwertyuiopasdfghjkl" | openssl enc -aes-256-ctr -k CAFEBABE -iv BADCAFE -pass pass:"1234567890123456" | openssl enc -base64
U2FsdGVkX183CtY5Gil5g9ftCQifaF7TOE5hN32ZXIkKK5LI
$ echo "qwertyuiopasdfghjkl" | openssl enc -aes-256-ctr -k CAFEBABE -iv BADCAFE -pass pass:"1234567890123456" | openssl enc -base64
U2FsdGVkX19X/GbdJ3xqLCJCS/s6wCMlwsvbuZIbrefXFbRt
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509856
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin, значит эта форма подходит.
Код: php
1.
string openssl_encrypt ( string $data , string $method , string $key [, int $options = 0 [, string $iv = "" [, string &$tag = NULL [, string $aad = "" [, int $tag_length = 16 ]]]]] )


Забей (пока) фиксированный iv="bla-bla" и попробуй зашифровать и расшифровать.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509862
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Tomin,

Код: java
1.
2.
$ openssl version
OpenSSL 1.0.2g 1 Mark 2016
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509864
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Tomin, хм... и как-то ты сочетаешь password и key. Непонятненько.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509865
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

вопщим пример из комментария к домкументации сработал )
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
<html>
    <head>
        <meta http-equiv="content-type" content="text/html;charset=utf-8">
        <title>Video</title>
    </head>
    <body>
        <h1>Video</h1>
        <?php

        function strtohex($x)
        {
            $s='';
            foreach (str_split($x) as $c) $s.=sprintf("%02X",ord($c));
            return($s);
        }

        $data = "qwertyuiopasdfghjkl";

        $iv = "1234567812345678";
        $pass = '1234567812345678';
        $method = 'aes-256-ctr';

        echo $data."<br>";
        echo "pass: ".$pass."<br>";
        echo "iv: ".$iv."<br>";
        echo "<br>";
        echo "key hex: ".strtohex ($pass)."<br>";
        echo "iv hex: ".strtohex ($iv)."<br>";

        $data = openssl_encrypt ($data, $method, $pass, true, $iv);
        echo $data."<br>";

        $query = base64_encode($data);
        echo $query."<br>";

        echo "<br>";
        echo 'Текущая версия PHP: ' . phpversion()."<br>";
        echo "openssl version text: " . OPENSSL_VERSION_TEXT."<br>";
        echo "openssl version number:  " . OPENSSL_VERSION_NUMBER."<br>";

        ?>
    </body>
</html>



он же в баше
Код: powershell
1.
echo "ehhyMx2q9k5AiooFc9HFqCYTsQ==" | openssl enc -base64 -d | openssl enc -aes-256-ctr -pass pass:"1234567890123456" -d -nosalt -nopad -K 31323334353637383132333435363738 -iv 31323334353637383132333435363738
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509872
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
точнее так, но несколько отличается в конце видимо из за другого конца строки
Код: powershell
1.
echo "qwertyuiopasdfghjkl" | openssl enc -aes-256-ctr -pass pass:"1234567890123456" -nosalt -nopad -K 31323334353637383132333435363738 -iv 31323334353637383132333435363738 | openssl enc -base64
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509874
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinнесколько отличается в конце
всмысле сам шифр в конце чуть другой, главное что дешифруется верно
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509887
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
))) ужс
что -pass pass:"1234567890123456" что -pass pass:"1234567812345678" при дешифровке верный результат, это вообще как так!?
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509892
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin,

тупанул, -pass pass: вообще лишнее, ключ же указан
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509894
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin,

-pass pass: вообще не прокатывает, только КЛЮЧ!!!
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509930
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinwolverin,

-pass pass: вообще не прокатывает, только КЛЮЧ!!!
Это не свазано с алгоритмом. Это просто баг консольной утилиты openssl.
Возможно она берет выхватывает их аргументов самые значимые,
применяет их к шаблону вызова функции и когда этот шаблон наполнен на 100%
то делается вызов а остальные параметры тупо игнорятся.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509932
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

нет нет, я попробовал пасс без ключа - нифига, только при указании ключа дешифруется
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509935
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется есть всего двай кейса использования openssl_encryt:
- pass + salt
- Key + IV

При этом salt и IV опциональны. Но каждый API считает своим долгом вписать свою реализацию
этих опционалов и подкидывает нам медвежью услугу. Нам сложно стыковать Java и PHP.

На самом деле pass все равно внутри должен трансформироваться в ключ равный длине
блока алгоритма иначе у нас просто алгоритм не будет удовлетворять своим-же требованиям
для AES-128 нам нужен 128-bit ключ который будет сгенерирован из парольной фразы.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39509951
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
таааксссс, поменял в пхп на aes-128-ctr
задал ключи и вектор в байтах взятых из hex php

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
                        byte[] keyBytes = {};
                        byte[] ivBytes = {};


                        SecretKeySpec key = new SecretKeySpec(keyBytes, "AES");
                        IvParameterSpec iv = new IvParameterSpec(ivBytes);

                        Cipher cipher = Cipher.getInstance("AES/CTR/NoPadding");
                        cipher.init(Cipher.ENCRYPT_MODE, key, iv);
                        byte[] ciphered = cipher.doFinal(originalText.getBytes());
                        String encryptedString = javax.xml.bind.DatatypeConverter.printBase64Binary(ciphered);



и результаты сошлись

теперь надо допилить до 256 и пароль строку в байты перевести
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39510052
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почти победа.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39510204
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonдля AES-128 нам нужен 128-bit ключ
теперь другая беда, пробую 256битный ключ, валится ошибка, не поддерживает что ли!?

oracle-glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=96;_ThreadName=Thread-2;|java.security.InvalidKeyException: Illegal key size
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39510212
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По ошибке трудно понять какой крипто провайдер у тебя подключен.

Желательно включить bouncycastle. Там должен быть aes-256
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39510217
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПо ошибке трудно понять какой крипто провайдер у тебя подключен.

Желательно включить bouncycastle. Там должен быть aes-256
у меня оракловая ЖВМ, а там похоже ограничение по дефолту до 128 только алгоритмы
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39510225
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinmaytonПо ошибке трудно понять какой крипто провайдер у тебя подключен.

Желательно включить bouncycastle. Там должен быть aes-256
у меня оракловая ЖВМ, а там похоже ограничение по дефолту до 128 только алгоритмы
Чел. Крипто-провайдер - это как JDBC-драйвер. Скачиваешь. Ставишь. И ОК.
Код: java
1.
2.
3.
4.
5.
<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk15on</artifactId>
    <version>1.58</version>
</dependency>


Чуть позже я подскажу как вывести список текущих провайдеров. Или может сам
поищи. Через стандартный Security API.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39510227
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потом для каждого провайдера можно вывести список алгоритмов которые он поддерживает.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39510228
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin,
Ограничения снимаются заменой jar файла в JRE, если действительно в ограничении дело
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39510229
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЧел. Крипто-провайдер - это как JDBC-драйвер. Скачиваешь. Ставишь. И ОК.

скачал
JCE
теперь на ключ не ругается, но почему то вектор все еще ограничен 16 байтами
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39510231
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
Но по-моему не в этом дело. Вы что-то напутали.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39510234
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
Но по-моему не в этом дело. Вы что-то напутали.
нет, у меня 7ка, сейчас минуту проверю
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39510236
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ОК. Можно и JCE. Все таки посмотрите список провайдеров и алгоритмов. Что-б не было "ковыряния" вслепую.

Просто название алгоритма может записываться не так как в OpenSSL. Буква там другая... мало ли чего.
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39510237
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все сошлось для 256

вывод

1. пароли пхп должны быть переведены в byte и длиной соответствовать блоку алгоритма
2. заданы 2 дополнительных параметра openssl_encrypt - OPENSSL_RAW_DATA, $iv

тогда получится каменный цветок )
...
Рейтинг: 0 / 0
Аналог openssl_encrypt из PHP
    #39510240
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin,

зы. вектор взял половину от пароля 32байтного
...
Рейтинг: 0 / 0
96 сообщений из 96, показаны все 4 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Аналог openssl_encrypt из PHP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]