# -*- coding:utf-8 -*-
# автор:Насекомые без границ
# Дата: 1 декабря 2023 г.
# Имя файла: test_pass.py
# Функция: реализация широко используемого алгоритма шифрования.
import hashlib
class TestPass():
def __init__(self):
super(TestPass, self).__init__()
self.name = "admin"
self.password = "123456"
if __name__ == "__main__":
test_pass = TestPass()
self.name
Имитировать данные имени пользователя,self.password
Имитировать данные пароля。MD5
это широко используемая односторонняя хэш-функция,является необратимым,Другими словами, содержимое до шифрования не может быть определено по зашифрованному результату;hashlib
,Это средний показательpython
Все это есть после установки.,Каталог по адресу:X:\Python37\Lib\hashlib.py
def test_md5(self):
md = hashlib.md5(self.password.encode())
md5_pass = md.hexdigest()
print(f"password{self.password}, После прямого шифрования md5 это: {md5_pass}")
Пароль 123456, После прямого шифрования md5 это: e10adc3949ba59abbe56e057f20f883e.
MD5
шифрование;md5
шифрование; def test_md5_01(self):
data = (self.name + self.password).lower()
md = hashlib.md5(data.encode())
md5_pass = md.hexdigest()
print(f"password{self.password},Имя пользователя {self.name}, Комбинация md5 после шифрования: {md5_pass}").
Пароль 123456,Имя пользователяadmin, Комбинация md5 после шифрования: a66abb5684c45962d887564f08346e8d.
def test_md5_02(self):
s = self.password[:5] # установить соль
md = hashlib.md5((self.password + s).encode())
md5_pass = md.hexdigest()
print(f"password{self.password},После того, как md5 засолен: {md5_pass}")
Пароль 123456,После добавления соли md5 будет выглядеть так: e363373ddc24b34c5bb9d99abbfd8be5.
join
способ справиться; def test_md5_03(self):
s = self.password[:6] # установить соль
md = hashlib.md5((self.password.join(s)).encode())
md5_pass = md.hexdigest()
print(f"password{self.password},Метод json для добавления соли md5: {md5_pass}").
Пароль 123456,Метод засолки md5 с использованием json: 43ec0d3f863b4f7e635e7169ddc18606
hashlib
середина;SHA1
шифрование,Реализация следующая: def test_sha1(self):
data = self.name + self.password
sha1 = hashlib.sha1()
sha1.update(data.encode("utf-8"))
sha1_pass = sha1.hexdigest()
print(f"password{self.password},Имя пользователя {self.name}, Комбинация sha1 после шифрования: {sha1_pass}").
Пароль 123456,Имя пользователяadmin, Комбинация sha1 после шифрования: cd5ea73cd58f827fa78eef7197b8ee606c99b2e6
SHA256
СравниватьSHA1
безопаснее,Но эффективность низкая,Результаты также будут длиться дольше;SHA256
шифрование,Реализация следующая: def test_sha256(self):
data = self.name + self.password
sha256 = hashlib.sha256()
sha256.update(data.encode("utf-8"))
sha1_pass = sha256.hexdigest()
print(f"password{self.password},Имя пользователя {self.name}, Комбинация sha256 после шифрования: {sha1_pass}").
Пароль 123456,Имя пользователяadmin, Комбинация sha256 после шифрования: ac0e7d037817094e9e0b4441f9bae3209d67b02fa484917065f71b16109a1a78.
SHA512
Я больше не буду об этом говорить.,Тот же принцип можно доказать.HMAC
это своего родашифрованиеhash
Протокол аутентификации сообщений для функций и общих ключей;hmac
Библиотека,Каталог по адресу:X:\Python37\Lib\hmac.py
hash
функция,Примеры следующие: def test_hmac(self):
hm = hmac.new(b'029-11111111', bytes(self.password, 'utf-8'), hashlib.md5)
hm.digest()
hmac_pass = hm.hexdigest()
print(f"password{self.password},Имя пользователя {self.name}, После шифрования hmac: {hmac_pass}")
Пароль 123456,Имя пользователяadmin, После шифрования hmac: 4e32d965d8965df4c7f6aaaf68791e86
DES
、AES
、RSA
、ECC
и т. д.# -*- coding:utf-8 -*-
# автор:Насекомые без границ
# Дата: 1 декабря 2023 г.
# Имя файла: test_pass.py
# Функция: реализация широко используемого алгоритма шифрования.
import hashlib
import hmac
class TestPass():
def __init__(self):
super(TestPass, self).__init__()
self.name = "admin"
self.password = "123456"
def test_md5(self):
md = hashlib.md5(self.password.encode())
md5_pass = md.hexdigest()
print(f"password{self.password}, После прямого шифрования md5 это: {md5_pass}")
def test_md5_01(self):
data = (self.name + self.password).lower()
md = hashlib.md5(data.encode())
md5_pass = md.hexdigest()
print(f"password{self.password},Имя пользователя {self.name}, Комбинация md5 после шифрования: {md5_pass}").
def test_md5_02(self):
s = self.password[:5] # установить соль
md = hashlib.md5((self.password + s).encode())
md5_pass = md.hexdigest()
print(f"password{self.password},После того, как md5 засолен: {md5_pass}")
def test_md5_03(self):
s = self.password[:6] # установить соль
md = hashlib.md5((self.password.join(s)).encode())
md5_pass = md.hexdigest()
print(f"password{self.password},Метод json для добавления соли md5: {md5_pass}").
def test_sha1(self):
data = self.name + self.password
sha1 = hashlib.sha1()
sha1.update(data.encode("utf-8"))
sha1_pass = sha1.hexdigest()
print(f"password{self.password},Имя пользователя {self.name}, Комбинация sha1 после шифрования: {sha1_pass}").
def test_sha256(self):
data = self.name + self.password
sha256 = hashlib.sha256()
sha256.update(data.encode("utf-8"))
sha1_pass = sha256.hexdigest()
print(f"password{self.password},Имя пользователя {self.name}, Комбинация sha256 после шифрования: {sha1_pass}").
def test_hmac(self):
hm = hmac.new(b'029-11111111', bytes(self.password, 'utf-8'), hashlib.md5)
hm.digest()
hmac_pass = hm.hexdigest()
print(f"password{self.password},Имя пользователя {self.name}, После шифрования hmac: {hmac_pass}")
if __name__ == "__main__":
test_pass = TestPass()
# test_pass.test_md5()
# test_pass.test_md5_01()
# test_pass.test_md5_02()
# test_pass.test_md5_03()
# test_pass.test_sha1()
# test_pass.test_sha256()
test_pass.test_hmac()