Моя проблема с паролем - PullRequest
0 голосов
/ 03 октября 2009

Перед нами стоит задача написать программу, которая предлагает пользователю ввести пароль. Правильный пароль: «Я люблю программирование на Java» И должно быть, что пароль имеет один пробел до и после, как я написал. Теперь существует условие, что если пользователь вводит более 2 или более пробелов до или после ввода правильного пароля, компьютер все равно примет его!

Ответы [ 3 ]

6 голосов
/ 03 октября 2009

Какой язык?

Вот ответ, не зависящий от языка.

У вас есть несколько вариантов здесь.

  • Вы можете написать небольшой «конечный автомат» (который я здесь использую очень неформально, чтобы описать какой-то итератор для всех символов в пароле, который ожидает определенный шаблон для ввода), в котором вы сначала проверяете на 1 или больше пробелов, затем строка посередине, затем 1 или более пробелов.
  • Вы можете использовать регулярное выражение. В зависимости от вашего языка может быть встроена поддержка регулярных выражений - зайдите в Google и введите «регулярные выражения», чтобы узнать больше.
  • Многие языки имеют строковые функции «обрезки», которые по существу избавляют от начальных или конечных ненужных символов, таких как пробелы. Вы можете проверить первый и последний символы строки, чтобы убедиться, что они являются пробелами, а затем выполнить обрезку и проверить «Я люблю программирование на Java» (без пробелов). Это гарантирует, что пароль является правильным в центральном контенте и окружен по крайней мере одним пробелом с каждой стороны.

Поскольку это кажется домашним заданием, и мне не хочется писать код для вас, я просто оставлю вас с этим, и вы сможете выяснить, как реализовать его на языке, который вам нужно использовать.

Либо при кодировании, либо после слов убедитесь, что вы нашли время, чтобы выяснить, ЧТО означает каждый из предложенных мной методов (т. Е. КАК работает каждый алгоритм), а также ПОЧЕМУ он (алгоритм) работает. Умение понять, почему это поможет вам решить подобные проблемы в будущем, а также вынудите вас придумывать собственные алгоритмы для различных классов задач по мере того, как вы будете приобретать больше опыта.

1 голос
/ 03 октября 2009

Вот мой умный ответ aleck как сценарий оболочки:

#!/bin/sh
echo -n "Password: "
read given
if (echo "$given" | grep -x ' *I love shell scripting *' > /dev/null) ; then
    echo "Password accepted"
else
    echo "Access denied"
fi

Чтобы сделать его безопасным, вы можете хэшировать пароль:

#!/bin/bash
read -s -p "Password: " given
echo
hash=$(echo "$given" | sed 's/^ *//' | sed 's/ *$//' | sha1sum)
if [ "$hash" = "6ee322d4a87ec61912b363e704247a1dbad94975  -" ] ; then
        echo "Password accepted"
else
        echo "Access denied"
fi

Моя точка зрения заключается в том, что в реальной жизни хранение паролей в виде открытого текста почти всегда является плохой идеей (хотя для этого назначения безопасность, безусловно, не является проблемой). Это довольно простой пример того, как сделать пароли более безопасными.

0 голосов
/ 04 октября 2009

Если вы используете Java, попробуйте метод String.trim ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...