Какую самую крутую программу вы создали на Python?
Самая крутая программа на Python, которую я когда-либо создавал, — это хэшер паролей Python. Давайте сначала разберемся, что такое хеширование паролей Python.
Что такое хеширование паролей?
Хеширование паролей Python — это форма расширенного шифрования, которую можно использовать для безопасного хранения паролей в Интернете. В современном мире, когда все находится в сети, пароли пользователей являются одной из наиболее легко подвергаемых атакам конфиденциальной информации в Интернете. Строка пароля преобразуется в строку случайных символов с использованием различных алгоритмов хеширования, которые использовались в моей программе. Пользователю предлагается ввести строку пароля, а затем выбрать соответствующий алгоритм хеширования, который будет использоваться. Затем отображается выходной хэш, который можно сохранить в Интернете.
Использовано шагов
Создайте функции для разных методов хеширования.
Возьмите пользовательский ввод для строки пароля
Возьмите пользовательский ввод для выбора метода хеширования
-
Преобразуйте строку и предоставьте вывод
Шаг 1. Создайте функции для разных методов хеширования.
Сначала мы создаем различные функции, которые принимают в качестве аргумента строку пароля и преобразуют ее в форму зашифрованного текста. Зашифрованный текст на самом деле представляет собой форму данных после хеширования. Различные функции содержат разные алгоритмы хеширования.
Синтаксис
def hash_with_MD5(message):
print ("MD5:", hashlib.md5(message).hexdigest())
Здесь функция принимает сообщение в качестве аргумента и преобразует его в зашифрованный текст, используя алгоритм хеширования MD5. Затем хэш-дайджест распечатывается для пользователя. Вместо MD5, если используется какой-либо другой алгоритм хеширования, то синтаксис будет тот же, просто будет изменен вызов хеш-функции.
Алгоритм
Шаг 1 — Определите различные функции для разных алгоритмов хеширования.
Шаг 2 — Возьмите введенную пользователем строку в качестве аргумента функции.
Шаг 3 — В теле функции распечатайте шестнадцатеричный дайджест хешированного пароля.
Пример
def hash_with_MD5(message):
encoded=message.encode()
print ("Hashed with MD5:", hashlib.md5(encoded).hexdigest())
def hash_with_SHA(message):
encoded=message.encode()
print ("Hashed with SHA:", hashlib.sha256(encoded).hexdigest())
def hash_with_blake(message):
encoded=message.encode()
print ("Hashed with blake2b:", hashlib.blake2b(encoded).hexdigest())
message='tutorialspoint'
hash_with_MD5(message)
hash_with_SHA(message)
hash_with_blake(message)
Выход
Hashed with MD5: 6c60b3cfe5124f982eb629e00a98f01f
Hashed with SHA:
15e6e9ddbe43d9fe5745a1348bf1535b0456956d18473f5a3d14d6ab06737770
Hashed with blake2b:
109f6f017d7a77bcf57e4b48e9c744280ae7f836477c16464b27a3fe62e1353c70ec4c7f938080
60ee7c311094eede0235a43151c3d2b7401a3cb5a8f8ab3fbb
Шаг 2. Введите пользовательский ввод для строки пароля.
Следующим шагом является получение от пользователя ввода пароля, который необходимо сохранить. Сохраняемый пароль должен быть хеширован по соображениям безопасности, и перед хешированием пароль, введенный пользователем, должен быть закодирован, чтобы гарантировать, что он подходит для передачи в функцию хеширования. Это действие кодирования выполняется функцией encode().
Синтаксис
password=input("message").encode()
Пароль, который мы получаем от пользователя с помощью функции input(), не может использоваться для хеширования, поэтому он кодируется с помощью функции encode(). Здесь эти два шага объединены в одну команду для простоты и простоты кодирования.
Алгоритм
Шаг 1 — Получите ввод от пользователя с помощью функции input().
Шаг 2 — Преобразование входных данных в закодированный формат.
Пример
password=input(“Enter the password for hashing: ”).encode()
Выход
Enter the password for hashing: Python
Шаг 3. Введите данные пользователя для выбора метода хеширования.
Мы предоставим пользователям выбор, какой алгоритм хеширования мы будем использовать для безопасного хеширования пароля. У разных методов есть разные преимущества и недостатки, поэтому мы предоставили пользователю возможность решить, какой из них наиболее подходит для конкретного пароля. Здесь мы используем простую структуру If-else для определения выбора, введенного пользователем.
Синтаксис
while True:
choice = input("Enter choice(1/2/3): ")
if choice in ('1', '2', '3'):
try:
…………………
Здесь мы спрашиваем пользователя, какой тип хеширования он выполняет, а также список опций. Затем входные данные проверяются в допустимом списке входных данных, и если они верны, то запрошенная операция выполняется. В противном случае управление программой выходит из цикла.
Алгоритм
Шаг 1 – Попросите пользователя внести свой вклад
Шаг 2 – Проверьте, верен ли ввод пользователя.
Шаг 3 – Выполните выбранные действия.
Шаг 4. Спросите, нужно ли выполнить дополнительные действия.
Пример
import hashlib
def hash_with_MD5(password):
#encoded=password.encode()
print ("Hashed with MD5:", hashlib.md5(password).hexdigest())
def hash_with_SHA(password):
#encoded=password.encode()
print ("Hashed with SHA:", hashlib.sha256(password).hexdigest())
def hash_with_blake(password):
#encoded=password.encode()
print ("Hashed with blake2b:", hashlib.blake2b(password).hexdigest())
print("Select hashing operation.")
print("1.MD5")
print("2.SHA")
print("3.blake")
while True:
# take input from the user
choice = input("Enter choice(1/2/3): ")
# check if choice is one of the four options
if choice in ('1', '2', '3'):
try:
password=input('Enter the password for hashing: ').encode()
except ValueError:
print("Invalid input. Please enter a string.")
continue
if choice == '1':
hash_with_MD5(password)
elif choice == '2':
hash_with_SHA(password)
elif choice == '3':
hash_with_blake(password)
# checking if user wants another calculation
# break the while loop if answer is no
next_calculation = input("Let's do next calculation? (yes/no): ")
if next_calculation == "no":
break
else:
print("Invalid Input")
Выход
Select hashing operation.
1.MD5
2.SHA
3.blake
Enter choice(1/2/3): 2
Enter the password for hashing:Python
Hashed with SHA:
18885f27b5af9012df19e496460f9294d5ab76128824c6f993787004f6d9a7db
Let's do next calculation? (yes/no): yes
Enter choice(1/2/3): 1
Enter the password for hashing:Tutorialspoint
Hashed with MD5: da653faa9f00528be9a57f3474f0e437
Let's do next calculation? (yes/no): no
Заключение
Таким образом, мы создали программу для хеширования паролей пользователей и возврата их в безопасное хранилище. Программа работает успешно и решает важную задачу. Также можно внести дальнейшие изменения для реализации новых функций, что мы сделаем позже.