Задать вопрос
  • Как шифровать пароль и логин в txt файле?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Пароли не нужно шифровать! Нужно хранить соль + хеш пароля.
    При сравнении отделяете соль, хпшируете пароль пользователя с этой солью и сравнивает полученный хеш с существующим.
    import hashlib, uuid
    salt = uuid.uuid4().hex
    hashed_password = hashlib.sha512(password + salt).hexdigest()


    #!/usr/bin/python3
    import hashlib, uuid
    
    SEPARATOR = "&"
    # generate hash string with salt
    def gen_hash(pwd, salt):
        return hashlib.sha512(pwd + salt).hexdigest()
    
    # generage hash password string (for safe to file)
    def gen_pw_string(pwd):
        salt = uuid.uuid4().hex
        return salt + SEPARATOR + gen_hash(pwd, salt)
    
    # parse hash password string, split it by salt and password hash
    def parse_pw_string(pwstring):
        return pwstring.split(SEPARATOR)
    
    # check password by its password hash string
    def check_pwd(pwd, pwstring):
        salt, _pwhash = parse_pw_string(pwstring)
        pwhash = gen_hash(pwd, salt)
        return pwhash == _pwhash
    
    
    ### test time!
    
    pwd1 = "123456"
    pwd2 = "qwerty"
    
    # genetate hash strings (may be saved to file or DB)
    pwstring1 = gen_pw_string(pwd1)
    pwstring2 = gen_pw_string(pwd2)
    print(pwd1, pwstring1)
    print(pwd2, pwstring2)
    
    # check passwords
    # must be True
    print(check_pwd(pwd1, pwstring1))
    print(check_pwd(pwd2, pwstring2))
    # must be False
    print(check_pwd(pwd1, pwstring2))
    print(check_pwd(pwd2, pwstring1))


    ('123456', 'f2b56ad9006a475e8c4f9b64446c3f5b&46c2d252a2667cc4b5a754ef5816e981570fd4bd9ced3ed1a6f6aaeae8ae83b795d6ffb66b3fe34650469b1c0d537785c2611157d41ebee6e54dc09527600a0c')
    ('qwerty', 'f2b56ad9006a475e8c4f9b64446c3f5b&3da9c4223c9fa2c66f5d70432401db14a89ddfe6feb99423083d152f98ef199d484b95b09a6535c766f28223c422cd1d862250867c12c7077144564b5c3fbc79')
    True
    True
    False
    False
    Ответ написан
  • Что нужно установить и сделать, чтобы начать пользоваться?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Консоль линукса и команду grep. Там много аргументов и возможностей.
    Команда sed - это фактически консольный потоковый текстовый редактор. Очень мощный, но сложный в понимании. Проще освоить питон и пользоваться для ваших целей вот такими однострочниками:
    $ man py | py 're.compile("\w{10,}").findall(sys.stdin.read())'
    completion
    expression
    DESCRIPTION
    expression
    interpreter
    compatible
    expression
    expression
    arithmetic
    automatically
    distribution

    Что тут происходит:
    Берём справку по консольной тулзе pythonpy, конвейером передаём в эту утилиту, которая выполнит кусочек питоновского кода. Код читает всё, что приходит на вход и находит все слова длинной 10 и более символов.
    Ответ написан
    Комментировать
  • Просмотр в сыром виде на гитхабе, ??

    DollyPapper
    @DollyPapper
    Если это не текстовый файл, а картинка или эксель, то отображаться он не будет, гитхаб не умеет парсить, что-то кроме обычного текста, соотв. там будет просто кнопка view raw
    Ответ написан
    1 комментарий
  • Что означает int86(0x10, ...)?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Потому что номера прерываний в DOS принято записывать в шестнадцатеричном виде.
    0x10 == 1016 == 1610
    Ответ написан
    Комментировать
  • Как легально продавать электронные книги?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Да, они заключают договор с каждый издательством. И условия договора индивидуальны. Конкурировать будет очень тяжело, ведь вы не сможете обеспечить издательству такие объёмы продаж, а потому не сможете заключить на столько же выгодный договор, как Литрес. Кроме того, вам понадобятся серьёзные вложения в организацию DRM, это не просто сайт со скачкой файлов запустить.
    Ответ написан
    3 комментария
  • Как организовать быстрый поиск по 78 млн строк?

    Зависит от того какой поиск и какие данные.
    Опять же - если данных уж очень много, то вряд ли получится всё в ОЗУ загрузить
    Если по точному соответствию, и все они уникальные - используй хэш таблицы.
    Если они сортируемые - отсортируй и используй бинарный поиск.
    Если нужен полнотекстовый/нечёткий поиск - проще взять стороннюю СУБД.
    Ответ написан
    7 комментариев
  • Выдать права для пользователя на 7 дней?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Вряд ли из-за 15 строк кода кто-то будет писать настолько уникальный функционал

    // устанавливаем роль и дату начала тестового периода
    function set_user_test_period() {
    
    	$current_date = date( 'd-m-Y H:i:s' );
    
    	// пишем в мету юзера текущее время
    	add_user_meta( $user_id, '_test_period_start_date', $current_date, true );
    
    	$user = new WP_User( $user_id );
    
    	// добавляем роль участника
    	$user->add_role( 'contributor' );
    
    }
    
    
    // проверка завершения тестового периода
    function check_user_test_period() {
    
    	$current_date = date( 'd-m-Y H:i:s' );
    	$user_id = get_current_user_id();
    
    	$test_period_start_date = get_user_meta( $user_id, '_test_period_start_date', true );
    
    	$user = new WP_User( $user_id );
    
    	// проверяем, что текущая дата больше тестового периода
    	if ( strtotime( $current_date ) > strtotime( $test_period_start_date . ' + 7 days' ) ) {
    		// убираем роль участника
    		$user->remove_role( 'contributor' );
    	}
    
    }


    Писал без тестов, может что-то не работать и логику нужно доработать по необходимости
    Ответ написан
    2 комментария
  • Как найти хаб в сети, если не знаешь где он?

    @iddqda
    network engineer, netdevops
    вытащить патчкорды из тех двух компов, и дернуть за них посильнее
    Ответ написан
    1 комментарий
  • Что будет с базой, если во время выполнения запроса к MySQL выключится питание сервера?

    @galaxy
    Скорее всего, ничего особенного не будет. Перезапустите, и заработает.

    Есть какие-то встроенные в СУБД механизмы, позволяющие избежать последствий?

    Конечно. Транзакции и REDO LOG
    Ответ написан
    2 комментария
  • Как узнать что сколько физических и логических ядер имеет Сервер?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Внутри виртуалки можно показать сколько угодно ядер - это не гарантирует, что вам дадут нагрузить физический процессор/ы полностью. Если сервер не ваш - проще всего уточнить у хостера. Если ваш - вопрос становится тривиальным.
    Ответ написан
    Комментировать
  • Почему не работает ">/dev/null 2>&1"?

    karabanov
    @karabanov Куратор тега Ubuntu
    Системный администратор
    Используй curl: curl -o /dev/null -sL http://myurl.com
    Ответ написан
    Комментировать
  • Почему не работает https?

    foxmuldercp
    @foxmuldercp
    Системный администратор, программист, фотограф
    потому что само-подписанный сертификат твой броузер не знает. попробуй использовать let's encrypt, если это сервер, который смотрит наружу в интернет, или добавь сертификат в список доверенных, если это только сервис локальной сети
    Ответ написан
    2 комментария
  • Как выйти из спама gmail?

    @galaxy
    Обратную зону настроили для адреса сервера?
    А вообще, https://www.mail-tester.com/ и проч в помощь
    Ответ написан
    2 комментария
  • Язык программирования D. Почему отличный язык остался невостребованным?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Представьте, что вам нужно изучить иностранный язык и от выбора языка зависит сколько людей в мире вы будет понимать, какое количество текстов вы сможете прочитать, сколько вакансий вам будет доступно и какого размера зарплаты вам светят. Что выберите - английский или венгерский? Так же у языка программирования. Пока на нём нет вакансий, никто не хочет его учить, а пока никто не хочет его учить, на нём нет вакансий. Вырваться из замкнутого круга можно только двумя путями - либо язык предлагает суперконкурентное преимущество программисту, либо ему выдаёт кредит доверия гигантская корпорация. Очевидно. у D не нашлось ни того, ни другого.
    Ответ написан
    24 комментария
  • Какой Линукс пойдет на слабый ноутбук?

    justhostRU
    @justhostRU
    Любой. Ну выжмете вы 50-150 мб озу. а потом придёт браузер и выжрет 850.
    самое прожорливое не ОС, а современные сайты.
    linux тут не спасёт.
    если надо экономить озу, то ищите нетребовательные сайты, а не дистрибутив.
    Ответ написан
    1 комментарий
  • Термукс проблема что делать?

    @Drno
    при чем тут termux? проверяйте правильно ли указаны репозитории у Вас. там же это написано
    Ответ написан
    Комментировать
  • Как минимизировать риски атак и взлома сайта?

    CityCat4
    @CityCat4 Куратор тега Информационная безопасность
    Дома с переломом ноги
    Сделать бэкап сайта и поместить его так, чтобы до него было не добраться (до бэкапа).
    Просканировать на уязвимости - в тырнете полно сканеров сайтов на WP
    Почаще просматривать логи на предмет подозрительной активности
    Ответ написан
    Комментировать
  • Как добавить определённое количество пустых строк в бд?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Никакие "пустые строки" в БД не добавляют. Это не тетрадка в клеточку.
    Она работает по-другому.
    Строки добавляют сразу заполненные, когда нужно.
    Ответ написан
    Комментировать
  • При записи данных в файл, они остаются в кеше ОС для возможности чтения из кеша?

    gbg
    @gbg Куратор тега Linux
    Любые ответы на любые вопросы
    Важно понимать следующее: нет никакой ложки

    С точки зрения Линукса, данные, которые вы якобы пишете на диск - это страницы в памяти, которые помечены как неанонимные (это значит, что на диске есть файл, который с ними связан), и грязные (а это значит, что эти страницы надо сбросить на диск).

    Причем момент, когда произойдет сброс, зависит от кучи факторов - программист на это может влиять таким образом:

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

    То есть, программист может потребовать, чтобы данные сбросились на диск пораньше, но не попозже.

    После сбрасывания страниц на диск, ОС помечает их как чистые. Это значит, что их можно занять под что-то другое. Можете запустить htop и посмотреть на желтую полоску - это как раз те самые страницы кэша, и их может быть очень много.

    Для небольших файлов может быть выгоднее использовать отображение файла на память (mmap), вместо ручного ковыряния с записью-чтением.

    А теперь важный вопрос - как же понять, остаются ли данные в кэше после записи. Да легко.

    -очистите кэш sync; echo 1 > /proc/sys/vm/drop_caches
    -посмотрите, что желтая часть на полоске памяти в htop исчезла
    -запустите DD, запишите на диск гигабайт. (dd if=/dev/urandom of=test.raw bs=8M count=128 status=progress)
    -посмотрите, что у вас нарисовался желтый гигабайт
    -можете потом считать этот файл и увидеть офигительную скорость - выше гигабайта в секунду (у меня получается 6, что очевидно говорит о том, что чтение происходило из RAM). Последнее лучше делать, если писали на HDD - потому что хороший SSD может выдать столько же

    Объективно, этот тест показывает, что ДА, записанные данные остаются болтаться в памяти.

    Но при этом, момент, когда эти данные оттуда уйдут, зависит от множества факторов (скажем, если памяти - в обрез, PageCache пойдет под нож в первую очередь). Так что может оказаться полезным использовать другие стратегии - например, mmap
    Ответ написан
    Комментировать