Добавил исходный код для изменения на трудно решаемых сайтах.
Crypto - Модуль с криптографическими функциями
-
@sergerdn said in Crypto - Модуль с криптографическими функциями:
@UserTrue said in Crypto - Модуль с криптографическими функциями:
Я не об этом, я просто не понимаю чем тебе не нравится игно ошибок?
Тем, что люди далее "забывают" обрабатывать их.
В простонародье "защита от дурака"
-
@sergerdn said in Crypto - Модуль с криптографическими функциями:
Тем, что люди далее "забывают" обрабатывать их.
Ну с этим ничего не поделаешь, люди и зубы чистить забывают ) Тогда придется уменьшить гибкость инструмента в угоду криворуким.
-
@sergerdn said in Crypto - Модуль с криптографическими функциями:
Например, некоторые "ушлые" пользователи умудряются править конфиг скрипта, чтобы обойти ограничения в настройках ресурса, например. Все эти вещи я проверяю далее в коде скрипта.
А править конфиг зачем? Настройки ресурса можно указывать в скомпилированном скрипте в "продвинутых настройках":


-
@sergerdn said in Crypto - Модуль с криптографическими функциями:
@Fox said in Crypto - Модуль с криптографическими функциями:
А править конфиг зачем?
Да понятия не имею.
Вероятно, кто-то не знает об этом меню, которое я отключил бы, если бы сам знал как.
Я помню делал динамические инпуты и поля в веб интерфейсе, в которых пользователь вводил данные. Эти данные передавались в ресурс с типом "Строка" в json, а внутри скрипта полученная строка разбивалась на объект и заполнялись данные в локальных ресурсах. Но тогда цель была именно в корректных входных данных для скрипта, а не сокрытие доп настроек ресурсов. Однако такой способ тоже может решить задачу
-
@Fox said in Crypto - Модуль с криптографическими функциями:
помню делал динамические инпуты и поля в веб интерфейсе
В моем опыте, написание веб-интерфейса может быть сопоставимо с усилиями, потраченными на написание скрипта. Я редко готов пойти на это.
Особенно много усилий у меня ушло даже на то, чтобы поверхностно разобраться, как веб-интерфейс работает, как к нему прикрутить https://vuejs.org/ и так далее. С содроганием вспоминаю. Правда делать нужно это один раз.
Да и не важно веб-интерфейс это или нет, я не доверяю ничему, что пришло в мой скрипт снаружи из настроек, все перепроверяю при старте скрипта и падаю, если что-то пошло не так.
-
@sergerdn said in Crypto - Модуль с криптографическими функциями:
@Fox said in Crypto - Модуль с криптографическими функциями:
помню делал динамические инпуты и поля в веб интерфейсе
В моем опыте, написание веб-интерфейса может быть сопоставимо с усилиями, потраченными на написание скрипта. Я редко готов пойти на это.
Особенно много усилий у меня ушло даже на то, чтобы поверхностно разобраться, как веб-интерфейс работает, как к нему прикрутить https://vuejs.org/ и так далее. С содроганием вспоминаю. Правда делать нужно это один раз.
Ммм, а я после FM как-то привык к vue, правда вместо нормального ide привык использовать https://bablosoft.com/bas/editmaininterface
Да и не важно веб-интерфейс это или нет, я не доверяю ничему, что пришло в мой скрипт снаружи из настроек, все перепроверяю при старте скрипта и падаю, если что-то пошло не так.
Хорошая привычка
-
@Fox said in Crypto - Модуль с криптографическими функциями:
правда вместо нормального ide привык использовать https://bablosoft.com/bas/editmaininterface
Это супер жесть, меня там на 5 минут не хватило )
-
@Fox said in Crypto - Модуль с криптографическими функциями:
Ммм, а я после FM как-то привык к vue, правда вместо нормального ide привык использовать https://bablosoft.com/bas/editmaininterface
Спасибо, но нет.
-
@sergerdn said in Crypto - Модуль с криптографическими функциями:
@Fox said in Crypto - Модуль с криптографическими функциями:
Ммм, а я после FM как-то привык к vue, правда вместо нормального ide привык использовать https://bablosoft.com/bas/editmaininterface
Спасибо, но нет.
Я просто мнением поделился )
-
@Fox said in Crypto - Модуль с криптографическими функциями:
Я просто мнением поделился )
Попробуй наконец ide и vite + vue ))
-
@mask said in Crypto - Модуль с криптографическими функциями:
@Νικήτας Здравствуйте, подскажите пожалуйста, можно ли спомощю этого модуля заходить на сайты с поддержкой криптографических ключей и сертификатов ГОСТ??
Он не имеет к этому отношения(нельзя)
-
@mask said in Crypto - Модуль с криптографическими функциями:
@UserTrue можно как то это реализовать?
У меня не было такой задачи
-
а я вот понять не могу как должно быть запаковано в AES - чтоб нормально распаковать этим модулем:
Есть скрипт:<?php $plaintext = 'My secret message 1234'; $password = '3sc3RLrpd17'; $method = 'aes-256-cbc'; $key = password_hash($password, PASSWORD_BCRYPT, ['cost' => 12]); echo "Key:" . $key . "\n"; // IV must be exact 16 chars (128 bit) $iv = chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0); // av3DYGLkwBsErphcyYp+imUW4QKs19hUnFyyYcXwURU= $encrypted = base64_encode(openssl_encrypt($plaintext, $method, $key, OPENSSL_RAW_DATA, $iv)); // My secret message 1234 $decrypted = openssl_decrypt(base64_decode($encrypted), $method, $key, OPENSSL_RAW_DATA, $iv); echo 'plaintext=' . $plaintext . "\n"; echo 'cipher=' . $method . "\n"; echo 'encrypted to: ' . $encrypted . "\n"; echo 'decrypted to: ' . $decrypted . "\n\n";взято от сюда https://gist.github.com/Oranzh/2520823f9d1cea603e60b8e8f3fe1d36#file-with_bcrypt_password_hash-md
получаем зашифрованную строку https://onlinephp.io/
rUZ+hPooQKl/AFDmc87rkoEQS8p//9ZTYDDpduhJhfw=
с паролем: 3sc3RLrpd17Пытаюсь распаковать через модуль:

Ошибок не выдает, но переменная AES - пустая -
cryptoJs просто с нюансами, на основе соли генерирует IV + encrypt key)
<?php $plaintext = 'My secret message 1234'; $password = '3sc3RLrpd17'; $method = 'aes-256-cbc'; $encrypted = encrypt_aes_cryptoJS($method, $password, $plaintext); $decrypted = decrypt_aes_cryptoJS($method, $password, $encrypted); echo 'plaintext=' . $plaintext . "\n"; echo 'cipher=' . $method . "\n"; echo 'encrypted to: ' . $encrypted . "\n"; echo 'decrypted to: ' . $decrypted . "\n\n"; function encrypt_aes_cryptoJS($cipher, $password, $plaintext) { $iv_len = openssl_cipher_iv_length($cipher); $key_len = openssl_cipher_key_length($cipher); $cryptoJS_magic = "Salted__"; $salt = random_bytes(8); list('key'=>$key, 'iv'=>$iv) = evpBytesToKey($password, $salt, $key_len, $iv_len); $encrypted_raw = openssl_encrypt($plaintext, $cipher, $key, OPENSSL_RAW_DATA, $iv); $full = $cryptoJS_magic . $salt . $encrypted_raw; return base64_encode($full); }; function decrypt_aes_cryptoJS($cipher, $password, $payloadB64) { $cryptoJS_magic = "Salted__"; $data = base64_decode($payloadB64, true); if ($data === false) { throw new Exception("Invalid base64 payload"); } if (substr($data, 0, 8) !== $cryptoJS_magic) { throw new Exception("missing cryptoJS Salted__ prefix"); } $salt = substr($data, 8, 8); $keyLen = openssl_cipher_key_length($cipher); $ivLen = openssl_cipher_iv_length($cipher); list('key' => $key, 'iv' => $iv) = evpBytesToKey($password, $salt, $keyLen, $ivLen); $encrypted_raw = substr($data, 16); $decrypted = openssl_decrypt($encrypted_raw, $cipher, $key, OPENSSL_RAW_DATA, $iv); if ($decrypted === false) { throw new Exception("Decryption failed"); } return $decrypted; } function evpBytesToKey($password, $salt, $key_len = 32, $iv_len = 16) { $data = ''; $prev = ''; $required = $key_len + $iv_len; while (strlen($data) < $required) { // D_i = MD5( D_{i-1} || password || salt ) $prev = md5($prev . $password . $salt, true); $data .= $prev; } return [ 'key' => substr($data, 0, $key_len), 'iv' => substr($data, $key_len, $iv_len), ]; }