對任意長度的訊息可以計算得到固定長度的唯一指紋。(通常用16進製制的字串表示)。
常用的雜湊演算法有哪些?
md5,sha1,sha224,sh256,sha384,sha512
雜湊演算法通常用在什麼場景?
數字簽名、使用者密碼管理、檔案完整性檢查、防止檔案被惡意修改
md5是一種資訊摘要演算法,它可以從需要加密的資料中按照一定的規則生成乙個特殊的字串,並且乙個檔案所對應的md5摘要是固定的,當檔案內容變化後,其md5值也會不一樣。
加鹽就是向明文中加入隨機數
只要明文相同,那麼md5加密後的密文就相同,於是攻擊者就可以通過撞庫的方式來破解出明文。加鹽就是向明文中加入隨機數,然後在生成md5,這樣一來即使明文相同,每次生成的md5碼也不同,如此就加大了暴力破解的難度。
登入時輸入使用者名稱和密碼,判斷使用者名稱是否存在user.txt中,否則提示使用者名稱不存在。判斷輸入的密碼跟存在檔案中的密碼是否一致,不一致則提示密碼錯誤。全部正確則提示登入成功。
(請寫出用到的知識點,具體步驟,遇到的問題及解決方法,關鍵語句說明,以及**及執行結果截圖)
用到的知識點:
檔案操作,函式,正規表示式,雜湊演算法
操作步驟:
利用檔案的操作開啟並獲取了檔案的內容,用到了python函式的相關知識,分別完成了註冊和登入的兩個函式,其次用到了正規表示式,檢驗了使用者名稱的正確與否,再然後匯入了hashlib,完成了md5值的轉化並最終儲存在檔案中。
關鍵語句說明:
新增的注釋。
import re
import hashlib
flag =
true
# 迴圈控制符
defmd5
(arg)
:# md5加密函式,將傳進來的函式加密並返回加密的值
md5_pwd = hashlib.md5(
bytes
('admin'
.encode(
'utf-8'))
) md5_pwd.update(
bytes
(arg.encode(
'utf-8'))
)return md5_pwd.hexdigest(
)# 返回加密的資料
defzhuce()
: f =
open
('user.txt'
,'r'
)# 開啟已存在使用者的檔案,假設檔案已經存在
flag =
true
name = f.readlines(
) f.close(
)while flag:
username =
input
('username:'
) check = re.
compile
("^[a-za-z]([a-za-z0-9 ])$"
)if check.match(username)
: sign =
false
# 使用者名稱已存在的標記符
for line in name:
if( md5(username)
== line.split(
'*')[0
]): sign =
true
print
('使用者名稱已存在,請重新輸入'
)if sign !=
true
: f =
open
('user.txt'
,'a'
)#註冊新的使用者
f.write(md5(username)
) f.write(
'*')
password =
input
('password:'
) f.write(md5(password)
) f.write(
'*')
f.write(
'\n'
) f.close(
)print
('註冊成功'
)break
else
:print
('使用者名稱不符合規範'
)def
denglu()
:# 登入函式
f =open
('user.txt'
,'r'
) flag =
true
name = f.readlines(
) f.close(
) i=
0 user =
input
('輸入使用者名稱:'
)for line in name:
if(md5(user)
== line.split(
'*')[0
]):print
('使用者名稱正確'
) pwd =
input
('輸入密碼:'
)if md5(pwd)
== line.split(
'*')[1
]:print
('密碼正確,登入成功'
)else
:print
('密碼錯誤'
)else
: i +=1if
len(name)
==i:
print
('使用者名稱不存在'
)break
info =
'''------請輸入相關數字-----
1.建立新的使用者
2.登陸已有使用者
(其他任意鍵退出選單)
'''while flag:
print
(info)
i =input()
if i ==
'1':
zhuce(
)elif i==
'2':
denglu(
)else
: exit(
)
使用redis完成註冊和登入
示例圖 前提是伺服器安裝了php redis擴充套件,即phpnfo裡有redis模組 1 表的設計 和mysql資料庫進行對比 redis是鍵值對的儲存方式 例如 使用者表 每個使用者儲存兩條資訊 因為註冊時要檢視乙個使用者名稱是否存在 即根據使用者名稱檢視是否含有對應的userid user u...
完成登入與註冊
完成登入與註冊頁面的html css js,其中的輸入項檢查包括 使用者名稱6 12位 首字母不能是數字 只能包含字母和數字 密碼6 12位 註冊頁兩次密碼是否一致 登入html 登入 登入.css box denglu input box 登入js function fnlogin else if...
函式登入註冊事例
1 usr bin env python32 conding utf 8 3 author liudong 45 6def login username,password 7 8用於使用者登入 9 param username 10 param password 11 return true,登入成...