python --- hashlib加密

一 * hashlib模塊

1.哈希算法哈希函數(shù) 又稱 散列函數(shù) 把數(shù)據(jù)轉(zhuǎn)化為一串?dāng)?shù)字


對(duì)同一個(gè)數(shù)據(jù)在同一次運(yùn)行同一個(gè)數(shù)據(jù)哈希結(jié)果相同

對(duì)每一個(gè)相同的值進(jìn)行哈希結(jié)果是相同的

可哈希??????????????? 不可變類型???? 數(shù)字字符串

不可哈希 ? ? ? ? ? ? 可變類型????? 字典元組列表

字典的key鍵是不可變且唯一的*可哈希*驻售,value值是可變的*不可哈希*

set集合是去重的也是散列函數(shù)

2.hashlib模塊是加密的


???? 1.加密也即摘要算法? 用法import hashlib

???????? md5?? 業(yè)界最常用的算法 32位16進(jìn)制

???????????? sha1???? 算法??????????????????? 40位16進(jìn)制

文件一致性???????

作用

驗(yàn)證加密??

基本的摘要會(huì)撞庫

加鹽是惡意注冊(cè)

動(dòng)態(tài)加鹽 -------安全的 username切片進(jìn)行修飾

2.hmac 對(duì)hash進(jìn)行封裝

???????? hmac(b"salt",b"hello",md5)

????????? obj=hashlib.sha1()

????????? obj.digest()??? #字節(jié)串

?? 3.獲得隨機(jī)數(shù)

import os

print(os.urandom(20))


3.登陸案例

用戶密碼是hello

a.txt

4.MD5加鹽 驗(yàn)證文件一致性


二 * hashlib中的sha1算法

2.驗(yàn)證客戶端是否合法


server.py

client.py

3.客戶端驗(yàn)證合法之后進(jìn)行通話


server.py

import socket

import hashlib

sk=socket.socket()

sk.bind(("127.0.0.1",9090))

sk.listen(5)

conn,addr=sk.accept()

salt="hello"

str="來到醫(yī)院"

ret_s=conn.send(str.encode("utf-8"))

ret_c=conn.recv(1024).decode("utf-8")

print(ret_c)

#對(duì)接收的內(nèi)容進(jìn)行加密

obj=hashlib.md5(salt.encode("utf-8"))

obj.update(str.encode("utf-8"))

str_obj=obj.hexdigest()

#將加密后的內(nèi)容和加密之前的內(nèi)容進(jìn)行對(duì)比

if ret_c == str_obj:

print("合法的客戶端允許鏈接")

while True:

s=input("發(fā)送消息給client>>>").encode("utf-8")

ret=conn.send(s)

print(ret)

msg=conn.recv(1024).decode("utf-8")

print(msg)

else:

print("不合法的客戶端非法不連接")

conn.close()

sk.close()

client.py

三? *? 驗(yàn)證合法之后進(jìn)行封裝?????????????

1.server.py

#創(chuàng)建連接

import hmac

def? mysocket():

? ? sk = socket.socket()

? ? sk.bind(('127.0.0.1', 8080))

? ? sk.listen(3)

? ? conn, addr = sk.accept()

? ? return conn,sk

#驗(yàn)證

def auth(conn,sk):

? ? salt = b'hello'

? ? str = os.urandom(20)

? ? conn.send(str)? # 發(fā)送字節(jié)串

? ? md5_s = conn.recv(1024)? # 接收客戶端發(fā)來的MD5_s

?? #以下是hashlib模塊

? ? # obj = hashlib.md5(salt)

? ? # obj.update(str)

? ? # r_str = obj.hexdigest()

#以下是hmac模塊

? ? obj = hmac.new(salt,str)

? ? r_str = obj.digest()

? ? if md5_s == r_str:

? ? ? ? print('合法的客戶端旧烧,允許連接兔魂!')

? ? ? ? com()

? ? else:

? ? ? ? print("非法!D吨印!")

? ? conn.close()

? ? sk.close()

#通信函數(shù)

def com():

? ? while True:

? ? ? ? s = input("發(fā)送消息給client 》》》").encode('utf-8')

? ? ? ? conn.send(s)

? ? ? ? msg = conn.recv(1024).decode('utf-8')

? ? ? ? print(msg)

if __name__ == '__main__':

? ? conn,sk = mysocket()

? ? auth(conn,sk)

cient.py

import hmac

def mysocket():

? ? sk = socket.socket()

? ? sk.connect(('127.0.0.1',8080))

? ? return sk

def auth(sk):

? ? salt = b'hello'

? ? bytes = sk.recv(1024) # 接收字符串

#以下是hashlib模塊

? ? # obj = hashlib.md5(salt)

? ? # obj.update(s)

? ? # r_str = obj.hexdigest()

#以下是hmac模塊

? ? obj = hmac.new(salt, bytes)

? ? r_str = obj.digest()

? ? sk.send(r_str)

? ? com()

? ? sk.close()

def com():

? ? while True:

? ? ? ? msg = sk.recv(1024).decode('utf-8')

? ? ? ? print(msg)

? ? ? ? s = input("發(fā)送消息給server 》》》").encode('utf-8')

? ? ? ? sk.send(s)

if __name__ == '__main__':

? ? sk = mysocket()

? ? auth(sk)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末尺碰,一起剝皮案震驚了整個(gè)濱河市四啰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌驮樊,老刑警劉巖薇正,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異囚衔,居然都是意外死亡挖腰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門练湿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來猴仑,“玉大人,你說我怎么就攤上這事肥哎×伤祝” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵篡诽,是天一觀的道長崖飘。 經(jīng)常有香客問我,道長杈女,這世上最難降的妖魔是什么朱浴? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任吊圾,我火速辦了婚禮,結(jié)果婚禮上赊琳,老公的妹妹穿的比我還像新娘街夭。我一直安慰自己,他們只是感情好躏筏,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布板丽。 她就那樣靜靜地躺著,像睡著了一般趁尼。 火紅的嫁衣襯著肌膚如雪埃碱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天酥泞,我揣著相機(jī)與錄音砚殿,去河邊找鬼。 笑死芝囤,一個(gè)胖子當(dāng)著我的面吹牛似炎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播悯姊,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼羡藐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了悯许?” 一聲冷哼從身側(cè)響起仆嗦,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎先壕,沒想到半個(gè)月后瘩扼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡垃僚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年集绰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谆棺。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡倒慧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出包券,到底是詐尸還是另有隱情纫谅,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布溅固,位于F島的核電站付秕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏侍郭。R本人自食惡果不足惜询吴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一掠河、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧猛计,春花似錦唠摹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至盗温,卻和暖如春藕赞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背卖局。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國打工斧蜕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人砚偶。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓批销,卻偏偏與公主長得像,于是被迫代替她去往敵國和親染坯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子均芽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 網(wǎng)絡(luò)編程 一.楔子 你現(xiàn)在已經(jīng)學(xué)會(huì)了寫python代碼,假如你寫了兩個(gè)python文件a.py和b.py鸣个,分別去運(yùn)...
    go以恒閱讀 2,016評(píng)論 0 6
  • 常用模塊 認(rèn)識(shí)模塊 什么是模塊 什么是模塊囤萤? 常見的場景:一個(gè)模塊就是一個(gè)包含了python定義和聲明的文件昼窗,文...
    go以恒閱讀 1,947評(píng)論 0 6
  • Socket:(基于TCP、IP協(xié)議的網(wǎng)絡(luò)通信)套接字 基于Socket實(shí)現(xiàn)聊天機(jī)器人# 客戶端import so...
    xinmin閱讀 796評(píng)論 0 0
  • 本文主要講述官方提供的客戶端以及自己寫的增刪查改工具: ros_tool.py功能總匯涛舍,展示界面用了python的...
    追尋823閱讀 3,175評(píng)論 0 1
  • 可以監(jiān)聽多個(gè)文件描述符(socket對(duì)象)(文件句柄)澄惊,一旦文件句柄出現(xiàn)變化,即可感知# 服務(wù)端import so...
    xinmin閱讀 372評(píng)論 0 0