最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于python中密碼加鹽的學(xué)習(xí)體會(huì)小結(jié)

 更新時(shí)間:2019年07月15日 09:23:20   作者:python_neophyte  
這篇文章主要介紹了關(guān)于python中密碼加鹽的學(xué)習(xí)體會(huì)小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

給密碼加密是什么:用戶注冊(cè)的密碼一般網(wǎng)站管理人員會(huì)利用md5方法加密,這種加密方法的好處是它是單向加密的,也就是說,你只有在提前知道某一串密碼對(duì)應(yīng)的md5加密碼,才能反推出密碼是多少,雖然有極小的幾率可能造成兩個(gè)密碼加密之后的值相等(這種現(xiàn)象稱為碰撞),不過基本上不用擔(dān)心,因?yàn)楦怕适菢O低的。在常用的hashlib模塊里還有sha1()等方法,它的本質(zhì)和md5是一致的,只是產(chǎn)生的結(jié)果是160 bit字節(jié),通常用一個(gè)40位的16進(jìn)制字符串表示。而md5是最常見的加密算法,生成速度很快,生成結(jié)果是固定的128 bit字節(jié),通常用一個(gè)32位的16進(jìn)制字符串表示。

給密碼加鹽是什么:見上面提到的,下面內(nèi)容摘自百度百科,是對(duì)彩虹表的大概定義和解釋,出于預(yù)先防止黑客利用彩虹表反推盜用用戶的密碼賬戶信息,就需要給密碼加‘鹽',其實(shí)簡(jiǎn)單來說,就是在hashlib模塊中的md5加密方法時(shí),傳入一個(gè)你自己想給的鹽,或者干脆隨機(jī)生成(比較安全,將鹽封裝在類中)。

彩虹表是一個(gè)用于加密散列函數(shù)逆運(yùn)算的預(yù)先計(jì)算好的表, 為破解密碼的散列值(或稱哈希值、微縮圖、摘要、指紋、哈希密文)而準(zhǔn)備。一般主流的彩虹表都在100G以上。 這樣的表常常用于恢復(fù)由有限集字符組成的固定長(zhǎng)度的純文本密碼。

md5和sha1加密介紹

import hashlib

md5=hashlib.md5()
md5.update('this is an example'.encode('utf-8'))
md5.update('again'.encode('utf-8')) #這里要記得update()方法可以多次調(diào)用,可以自己試一試。
print(md5.hexdigest()) 
#承接上面
sha1=hashlib.sha1()
sha1.update('this is an example'.encode('utf-8'))
sha1.update('...'.encode('utf-8'))
print(sha1.hexdigest())

下面利用md5加密和加鹽的方法,實(shí)現(xiàn)簡(jiǎn)單的用戶注冊(cè),將信息儲(chǔ)存在字典中,然后模擬登陸。

#!/usr/bin/python3
#-*-coding:UTF-8-*-

import hashlib,random

#注冊(cè)
storage={}

def registration(u,p):
  if u in storage:
    return 'username occupied.please choose another username...'
  else:
    storage[u]=Users(u,p)


#加密方法
def get_md5(s):
  return hashlib.md5(s.encode('utf-8')).hexdigest()

#登陸
class Users(object):
  def __init__(self,username,password):
    self.username=username #!!!!!!!注意鹽是隨機(jī)給的,每注冊(cè)一個(gè)賬號(hào)給一次鹽,封裝在Users類里面,在login函數(shù)里比較相等時(shí),
    # a.salt是注冊(cè)時(shí)封裝好的鹽,這時(shí)是固定的鹽,所以只要賬號(hào)密碼對(duì)了就可以了。
    self.salt=''.join([chr(random.randint(48,122)) for i in range(20)])
    self.password=get_md5(password+self.salt)

def login(user,pw):
  if user not in storage.keys():
    return 'wrong username'
  else:
    a=storage[user]
    if a.password==get_md5(pw+a.salt):
      return 'succeeded'
    else:
      return 'wrong password'

registration('mary','12345')
registration('bob','aa895')
registration('kirk','ba155')
print(storage)
print(login('mary','12345'))

最重要是理解每一次的鹽都封裝好了,在login函數(shù)中,只要用戶輸入的密碼+封裝好的鹽正確,即可實(shí)現(xiàn)登陸

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python判斷遠(yuǎn)程服務(wù)器上Excel文件是否被人打開的方法

    Python判斷遠(yuǎn)程服務(wù)器上Excel文件是否被人打開的方法

    這篇文章主要介紹了Python如何判斷遠(yuǎn)程服務(wù)器上Excel文件是否被人打開,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 簡(jiǎn)單介紹Python中的try和finally和with方法

    簡(jiǎn)單介紹Python中的try和finally和with方法

    這篇文章主要介紹了Python中的try和finally和with方法,是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • python 反向輸出字符串的方法

    python 反向輸出字符串的方法

    今天小編就為大家分享一篇python 反向輸出字符串的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • python排序算法之選擇排序

    python排序算法之選擇排序

    這篇文章主要介紹了python排序算法之選擇排序,選擇排序表示從無(wú)序的數(shù)組中,每次選擇最小或最大的數(shù)據(jù),從無(wú)序數(shù)組中放到有序數(shù)組的末尾,以達(dá)到排序的效果,需要的朋友可以參考下
    2023-04-04
  • Python棧類實(shí)例分析

    Python棧類實(shí)例分析

    這篇文章主要介紹了Python棧類,實(shí)例分析了Python實(shí)現(xiàn)棧的入棧、出棧、移除、判定為空的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • 關(guān)于python中模塊和重載的問題

    關(guān)于python中模塊和重載的問題

    這篇文章主要介紹了python模塊和重載的問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • Python小程序之在圖片上加入數(shù)字的代碼

    Python小程序之在圖片上加入數(shù)字的代碼

    這篇文章主要介紹了Python小程序之在圖片上加入數(shù)字的代碼,這個(gè)是小編今天練手的小程序,代碼簡(jiǎn)單易懂,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • python中from module import * 的一個(gè)坑

    python中from module import * 的一個(gè)坑

    from module import *把module中的成員全部導(dǎo)到了當(dāng)前的global namespace,訪問起來就比較方便了。當(dāng)然,python style一般不建議這么做,因?yàn)榭赡芤餹ame conflict。
    2014-07-07
  • 一文帶大家了解python中的換行以及轉(zhuǎn)義

    一文帶大家了解python中的換行以及轉(zhuǎn)義

    這篇文章主要為大家詳細(xì)介紹了python中的換行以及轉(zhuǎn)義的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),對(duì)我們深入了解python有一定的幫助,需要的小伙伴可以了解下
    2023-11-11
  • Python?pickle模塊實(shí)現(xiàn)Python對(duì)象持久化存儲(chǔ)

    Python?pickle模塊實(shí)現(xiàn)Python對(duì)象持久化存儲(chǔ)

    這篇文章主要介紹了Python?pickle模塊實(shí)現(xiàn)Python對(duì)象持久化存儲(chǔ),pickle?是?python?語(yǔ)言的一個(gè)標(biāo)準(zhǔn)模塊,和python安裝時(shí)共同安裝好的一個(gè)模塊。下文基于pickle模塊展開實(shí)現(xiàn)Python對(duì)象持久化存儲(chǔ)的詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2022-05-05

最新評(píng)論

沛县| 读书| 大化| 渭南市| 射洪县| 鹰潭市| 留坝县| 同江市| 庆安县| 当涂县| 老河口市| 彩票| 鄂伦春自治旗| 昂仁县| 静乐县| 随州市| 陆丰市| 吉木乃县| 北宁市| 海原县| 公安县| 老河口市| 普定县| 美姑县| 张北县| 宽城| 沾化县| 正安县| 杭州市| 徐汇区| 丰原市| 涞水县| 宝坻区| 东丰县| 宁国市| 迁安市| 杭锦旗| 怀宁县| 新干县| 沂南县| 交口县|